我在
Windows Server 2008上运行sql Server 2008 R2 SP1.我有一个从Visual Studio 2010运行的.NET脚本,它执行以下操作:
>进入数据库
>做出改变
>迭代
它将迭代的总次数是150,但它停止在100个连接,我无法弄清楚原因.我可以调整我的脚本只使用一个线程,但我更愿意知道我错过了最大连接设置的位置,因为知道将来参考会更有用.
这是我到目前为止检查的地方:
> Visual Studio 2010中的sql连接字符串(设置为1000)
> SSMS数据库实例连接属性(它设置为0 [无限]用户连接)
>在Google Server上搜索了一些信息,看起来它可以处理超过100个连接
>逐步浏览我的代码和SP_WHO2,它提供了有关逻辑连接的更多信息,看到连接数从52开始,并且在152个逻辑连接处出现了“Max Pooled Connections reach”错误的脚本错误.
>更改连接字符串以使用Data Source = Perfsql02; Initial Catalog = Masked; Integrated Security = True; Max Pool Size = 1000
我不确定在哪里检查,我知道我在这里有很多活动部件,但我感觉我只是错过了某个地方的最大泳池设置.
解决方法
sql Server默认最多允许
32767 connections.它可以使用sp_configure进行更改.要查看此设置的当前配置,请使用以下查询:
select * from sys.configurations where name ='user connections'
默认情况下,您应该看到最大值32767,value_in_use等于0(使用默认设置).如果已更改,则可以重新配置sql Server以使用链接中所述的其他值.
您还应该检查实际连接的数量,因为应用程序外部可能有更多活动(或者您的应用程序正在建立比您想象的更多的连接).您将需要查看常规统计 – > perfmon中的逻辑连接或查询sys.dm_os_performance_counters中的值(cntr_value将显示当前时间点值):
select * from sys.dm_os_performance_counters where counter_name ='User Connections'