Sql server 2012 如何检查SQL Server的当前池大小

Sql server 2012 如何检查SQL Server的当前池大小,sql-server-2012,database-connection,connection-pooling,Sql Server 2012,Database Connection,Connection Pooling,有没有办法检查SQL Server中当前的连接池大小?我说的不是最大连接池大小,而是当前池大小。假设最大池大小为100,有49个连接打开,现在应该显示51个可用连接或49个已使用连接 那么,有这样一个疑问吗?这么多这些东西似乎都不在dmv可以直接访问的范围之内。我相信比我更有见识的人能给你更好的答案 这是我能接近的 SELECT des.program_name , des.login_name , des.host_name , COUNT(des.ses

有没有办法检查SQL Server中当前的连接池大小?我说的不是最大连接池大小,而是当前池大小。假设最大池大小为100,有49个连接打开,现在应该显示51个可用连接或49个已使用连接


那么,有这样一个疑问吗?

这么多这些东西似乎都不在dmv可以直接访问的范围之内。我相信比我更有见识的人能给你更好的答案

这是我能接近的

SELECT  des.program_name
      , des.login_name
      , des.host_name
      , COUNT(des.session_id) [Connections]
FROM    sys.dm_exec_sessions des
INNER JOIN sys.dm_exec_connections DEC
        ON des.session_id = DEC.session_id
WHERE   des.is_user_process = 1
        AND des.status != 'running'
GROUP BY des.program_name
      , des.login_name
      , des.host_name
HAVING  COUNT(des.session_id) > 2
ORDER BY COUNT(des.session_id) DESC

这将通过登录以及从每个主机和应用程序聚合您的连接。这将使您了解当前连接是如何汇集的。如果您知道自己的最大数量,您可以从中减去连接数,这样就可以得到每个池中剩余的连接数

我认为要实现这一点,您需要使用ADO.Net中的NumberOfActiveConnections性能计数器(如果您可以选择的话)。这篇文章讨论了具体的计数器:

默认情况下它是关闭的,因此您必须添加一些配置才能启用它。这将在下面的链接中详细介绍。下面的链接还有一些读取计数器的示例代码


希望这有帮助

我想是性能计数器。好问题。谢谢,这就是我要找的