在 SQL Server 中查找活動的 SQL 連接
- 2022 年 7 月 15 日
- 筆記
- SQLServer, SqlServer監控與優化, SQL連接
在SQL Server中有幾種方法可以找到活動的 SQL 連接。讓我們看看一些使用 T-SQL 查詢的簡單快捷的方法。
SP_WHO
SP_WHO
是 SQL Server 內置的系統存儲過程, 其他方法相比,SP_WHO
將具有最少的列,但是一種快速列出活動連接的方法。
以下是在 SQL Server Management Studio 中的執行示例:
EXEC SP_WHO
具體的欄位解釋請參閱官方文檔 SP_WHO
其中比較重要的列是:
- spid: 會話ID
- loginname: 登錄帳號
- blk: 阻塞進程的會話ID(如果存在)。否則,此列為零, 可以使用該列排查死鎖
SYS.SYSPROCESSES
另一種查找活動 SQL 連接的絕妙方法是使用系統兼容性視圖 SYS.SYSPROCESSES
此視圖有很多列,其中包含很多資訊,這些資訊有助於您找出活動的 sql 連接,尤其是當您想要查找被阻塞的進程時。但是,這是向後兼容的視圖,不建議使用,因為未來的版本可能會刪除它
以下是在 SQL Server Management Studio 中的執行示例:
SELECT * FROM SYS.SYSPROCESSES
具體的欄位解釋請參閱官方文檔 SYS.SYSPROCESSES
SYS.DM_EXEC_SESSIONS (建議使用)
SYS.DM_EXEC_SESSIONS
是替代舊系統表 sysprocesses
的動態管理視圖之一。SYS.DM_EXEC_SESSIONS
的優點是它的列 is_user_process
。使用此列,您可以輕鬆過濾掉系統進程。
以下是在 SQL Server Management Studio 中的執行示例:
SELECT * FROM SYS.DM_EXEC_SESSIONS where is_user_process = 1
具體的欄位解釋請參閱官方文檔 SYS.DM_EXEC_SESSIONS