[英]SQL Server connection count issue
我正在使用SQL Server 2008 Enterprise + .Net 3.5 + C#+ ADO.Net。 我正在使用以下SQL語句監視連接號,是否正確? 如果是,我的困惑是,在下面的語句中,來自ADO.Net客戶端的一個連接映射為僅一個連接? 還是一個ADO.Net連接可以在這里映射到多個連接?
SELECT * FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:General Statistics'
(“監視用戶連接”行)
預先感謝喬治
使用SELECT * FROM
sys.dm_exec_connections
查找所有連接。 client_net_address
具有客戶端地址,因此您可以跟蹤連接的來源。
使用SELECT * FROM
sys.dm_exec_sessions
查找所有會話(除非使用MARS ,否則會話通常與連接建立1到1映射)。 program_name
列將包含您在連接字符串中傳入的應用程序名稱的值,並允許您標識自己的連接。
使用SELECT * FROM
sys.dm_exec_requests
查看所有當前正在執行的批處理(請求)。
性能計數器只會給您一個值,即當前連接數:
SELECT cntr_value
FROM sys.dm_os_performance_counters
WHERE object_name = 'SQLServer:General Statistics'
and counter_name = 'User Connections'
可以滿足您的需求嗎? 如果您要計算連接數,我會感到困惑。 您的問題似乎說不,您的評論對我意味着是。
Sp_who2 'Active'
默認情況下,基礎SQL Server驅動程序代碼使用連接池。 您會發現,應用程序“擁有”的物理連接數將隨着時間增長到當前限制,但這與“正在使用”的數不同。
這樣可以避免重新協商每個鏈接上的安全性等,從而加快了應用程序對數據庫的訪問。
如@sgmarshall所述,使用sp_who2
存儲過程來確定每個連接當前正在做什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.