Microsoft sql Server 2012 (SP1) – 11.0.3000.0 (X64)
Oct 19 2012 13:38:57
copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1)
我们使用大约50台服务器分成8个不同组的网站不同部分.
我们的网站使用此sql Server记录访问跟踪数据.在过去的几天里,它已经发布了有关重置连接池的以下消息:
The client was unable to reuse a session with SPID 1327,which had been reset for connection pooling. The failure ID is 46. This error may have been caused by an earlier operation failing. Check the error logs for Failed operations immediately before this error message.
错误日志读取:
Error: 18056,Severity: 20,State: 46.
The client was unable to reuse a session with SPID 959,which had been reset for connection pooling. The failure ID is 46. This error may have been caused by an earlier operation failing. Check the error logs for Failed operations immediately before this error message.
Login Failed for user ‘xxxx’. Reason: Failed to open the database ‘xxxxxxxx’ configured in the login object while revalidating the login on the connection. [CLIENT: 10.xx.xx.xxx]
经过一番挖掘后,我在CSS博客上找到了这个文件:How It Works: Error 18056 – The client was unable to reuse a session with SPID ##,which had been reset for connection pooling和Aaron Bertrand的这个文件:Troubleshooting Error 18456.我知道错误号是不同的,但失败ID是相同的,一些消息是相同的).
失败ID 46表明登录没有权限.我们的登录默认为master数据库,并且在连接字符串中指定了db名称.
我想检查连接字符串池的数量等,并检查Perfmon中针对sqlServer的.Net Data Provider的所有计数器.它只为我提供了defaultdomain9675选项,因此我选择了假设这是我们的Datacentre网络的系统生成的ID名称.不幸的是,所有的计数器都读数为零.在我们的其他主服务器上,连接池徘徊在10左右,这是我期望在具有这种负载的健康服务器上看到的.
我的问题是3折
>任何人都可以建议为什么Windows 2008 R2 Server没有为sqlServer显示.Net数据提供程序?
>有没有人经历过这个,因为我显然认为没有权限的登录是红鲱鱼?
>如果不同的Web服务器组具有相同的连接字符串语法但空格略有不同,是否会导致服务器使用另一个连接池?
Min&最大内存设置为20GB&分别为58GB.服务器是一个具有64GB RAM的专用数据库服务器.我不认为记忆是问题,因为盒子似乎有一个不错的预期页面.未启用自动关闭.服务器始终处于运行状态:这是一个24×7的网站,使用率很高.
解决方法
2 – 是的,我在我的环境中定期看到这个,虽然我们还没有在我们看到的系统上的sql 2012上.您可能还想检查http://blogs.msdn.com/b/psssql/archive/2013/02/13/breaking-down-18065.aspx虽然状态46似乎与连接字符串中具有特定的Database = xxx有关,该数据库是否仍然存在?
该方法我的网络设置我怀疑这是网络的TCP会话的自动关闭被5分钟闲置这是个问题之后 – 无论是分贝,也不是客户端关闭,以便连接池仍然认为连接是打开的,并尝试使用该会话它只是发现它不再是真的开放了.您没有提到如何配置Web服务器和db之间的网络,也许您的情况类似.
另一种可能是关于TCP烟囱卸载设置的问题(旧的,不确定,如果真的解决了,请参阅http://support.microsoft.com/kb/942861).
3 – 我的理解是池化需要精确的字符串匹配,因此空格和不同的参数顺序会导致不同的池. (如果我错了,请告诉我.)