Sql-Server
在 SQL Server 中的任何會話和任何數據庫中查找打開的事務
我知道我們可以使用
select @@trancount
andselect * from sys.sysprocesses where open_tran = 1
來查找會話在給定數據庫中是否有打開的事務。這些語句的問題是我必須在事務開始的同一個視窗中執行它們。我們的開發伺服器中有 10 個不同的數據庫。我想知道是否有辦法找出是否在任何會話中的任何數據庫中打開了事務。我有一個問題,我啟動了一個事務來測試某些東西並關閉了會話而不送出或回滾它。我想知道交易是否仍然開放,如果是,我該如何關閉它?
您可以使用sp_whoisactive:
在其預設模式下,Who is Active 顯示具有活動事務的任何會話。這種狀態體現在
$$ open_tran_count $$列,其值是已在請求或會話上隱式或顯式啟動的嵌套事務的深度。
列出不需要的打開會話後,您可以使用會話 ID 將其終止:
KILL 87;
但是您需要管理員權限才能這樣做。