我们使用SQL身份验证(以减少连接池的数量)和.NET 4.0连接字符串连接到Windows 2008 R2 Enterprise Server上的SQL Server Enterprise Edition 2012 SP1:
Microsoft SQL Server 2012(SP1)-11.0.3000.0(X64)
2012年10月19日13:38:57
版权所有(c)
Windows NT 6.1(Build 7601:Service Pack 1)上的Microsoft Corporation Enterprise Edition(64位)
我们使用大约50台服务器,将其分为网站的不同部分8个不同的组。
我们的网站正在使用此SQL Server记录访问跟踪数据。在过去的几天中,它吐出了有关重置连接池的以下消息:
客户端无法重用SPID 1327的会话,该会话已被重置用于连接池。故障ID为46。此错误可能是由较早的操作失败引起的。在此错误消息之前,请检查错误日志中是否有失败的操作。
错误日志显示为:
错误:18056,严重性:20,状态:46
。客户端无法重用SPID 959的会话,该会话已被重置用于连接池。失败ID为46。此错误可能是由较早的操作失败引起的。在此错误消息之前,请检查错误日志中是否有失败的操作。
用户“ xxxx”的登录失败。原因:在重新验证连接登录时,无法打开在登录对象中配置的数据库'xxxxxxxx'。[客户:10.xx.xx.xxx]
经过一番挖掘后,我在CSS博客上找到了该文档:工作原理:错误18056 –客户端无法重用SPID ##进行会话,该会话已被重置用于连接池,Aaron Bertrand 对此进行了重置:故障排除错误18456。我知道错误号不同,但是失败ID相同,并且消息数量相同)。
故障ID 46表示登录名没有权限。我们的登录名默认为master数据库,并且数据库名称在连接字符串中指定。
我想检查连接字符串池等的数量,并检查Perfmon中所有的计数器.Net Data Provider for SqlServer
。它只为我defaultdomain9675
提供了实例的选项,因此我选择了那是假设它是我们的Datacentre网络的系统生成的ID名称。不幸的是,所有计数器的读数均为零。在我们的其他一台主服务器上,连接池徘徊在10个左右,这是我期望在具有这种负载的正常服务器上看到的。
我的问题是三折
谁能说出Windows 2008 R2 Server没有显示的原因
.Net Data Provider for SqlServer
吗?有谁遇到过这种情况,因为我显然认为没有权限的登录名是一个红鲱鱼?
如果不同的Web服务器组具有相同的连接字符串语法,但空格稍有不同,这会导致服务器使用另一个连接池吗?
最小和最大内存设置分别为20GB和58GB。该服务器是具有64GB RAM的专用数据库服务器。我不认为内存不是问题,因为该包装盒的页面预期效果不错。未启用自动关闭。服务器始终处于启动状态:这是一个使用率很高的24x7网站。