6

有沒有辦法檢查SQL Server中的當前連接池大小?我不是在談論最大連接池大小,而是當前的池大小。假設最大池大小爲100,並且打開了49個連接,它現在應該向我顯示51個可用的或可能的49個消耗。如何檢查SQL Server的當前池大小

那麼,有沒有這樣的查詢?

+0

我認爲Perf計數器。好問題。 – usr

回答

4

這些東西似乎超出了直接從dmv's訪問的內容。我確信有人比我更瞭解情況可以給你更好的答案。

這是儘可能接近,我可以得到。

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 

這將通過登錄並從每個主機和應用程序收集您的連接。這會給你一個關於你的連接目前如何彙集的想法。如果你知道你的最大金額,你可以從它減去連接,它可以給你每個池中剩餘的連接數。

2

我認爲要做到這一點,您需要在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

希望這有助於!

+0

謝謝,這是我正在尋找的 – zhiyazw