Sql-Server-2012

SQL Server 跟踪中缺少註銷事件是否意味著連接洩漏?

  • June 12, 2018

(最初在 StackOverflow 上問這個問題被告知這個社區是正確的)。

我正在調查未發布的 SQL Server 數據庫連接的可能性。我執行了 SQL Server Profiler 並收集了事件跟踪。通常在執行 SQL 命令之後,我會看到“Audit Logout”事件並且經常執行 sp_reset_connection,這表明連接被重新用於新命令。

但是,我跟踪了一些 SPID,並看到在一些 SQL 命令(例如 INSERT)之後,給定的 SPID 沒有更多的事件。這是否意味著連接沒有被釋放,保持打開狀態並且不能被重用?

好問題!要確定連接現在是否仍處於打開狀態,請查看 sys.sysprocesses:

SELECT * FROM sys.sysprocesses;

一般來說,只要他們不做任何事情,打開的連接對於 SQL Server 來說不是問題——它可以處理數以萬計的連接。連接池 - 保持連接打開並準備好重用 - 很好,並且不會消耗 SQL Server 上的那麼多資源。

我通常更擔心睡眠會話 - 幾分鐘前開始請求但沒有完成的人 - 你可以使用 Adam Machanic 的免費sp_WhoIsActive找到那些:

sp_WhoIsActive @ShowSleepingSpids = 1

引用自:https://dba.stackexchange.com/questions/209367