有没有办法检查SQL Server中的当前连接池大小?我不是在谈论最大连接池大小,而是当前池大小。假设最大池大小为100并且有49个连接打开,它现在应该显示51个可用或者可能消耗49个。
那么,有这样的查询吗?
答案 0 :(得分:8)
这些东西似乎超出了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
这将通过登录以及每个主机和应用程序聚合您的连接。这将让您了解当前如何汇集您的连接。如果您知道自己的最大金额,可以减去它的连接数,它可以为您提供每个池中剩余的连接数。
答案 1 :(得分:3)
我认为要实现这一点,您可能希望在ADO.Net中使用NumberOfActiveConnections性能计数器(如果这是您的选项)。本文讨论了具体的反击:
http://msdn.microsoft.com/en-us/library/ms254503(v=vs.110).aspx
默认情况下它处于关闭状态,因此您必须添加一些配置才能启用它。这在以下链接中有详细说明。以下链接还有一些示例代码来读取计数器。
http://msdn.microsoft.com/en-us/library/ms254503(v=vs.110).aspx#ActivatingOffByDefault
希望这有帮助!