您的位置:首頁技術文章
文章詳情頁

SQL SERVER – 檢測LOCK、終止會話 ID/UOW 的用戶進程

瀏覽:103日期:2023-11-01 10:09:59

KILL { session ID | UOW } [ WITH STATUSONLY ]

參數

session ID

要終止的進程的會話 ID。session ID 是在建立連接時為每個用戶連接分配的唯一整數 (int)。在連接期間,會話 ID 值與該連接捆綁在一起。連接結束時,則釋放該整數值,并且可以將它重新分配給新的連接。

使用 KILL session ID 可終止與指定的會話 ID 關聯的常規非分布式事務和分布式事務。

UOW

標識分布式事務的工作單元 ID (UOW - Unit of Work ID)。UOW is a character string that may be obtained from the syslockinfo table, which gives the UOW for every lock held by a DTC transaction. UOW also may be obtained from the error log or through the DTC monitor.

使用 KILL UOW 可終止孤立的分布式事務。這些事務不與任何真實的會話 ID 相關聯,與虛擬的會話 相關聯。可使標識孤立事務變得更為簡單,其方法是查詢 sys.dm_tran_locks、sys.dm_exec_sessions 或 sys.dm_exec_requests 動態管理視圖中的會話 ID 列。

WITH STATUSONLY

生成由于更早的 KILL 語句而正在回滾的指定 session ID 或 UOW 的進度報告。KILL WITH STATUSONLY 不終止或回滾 session ID 或 UOW,該命令只顯示當前的回滾進度。

DEMO SQL SCRIPT:

sp_lock; -- 顯示SQL SERVER LOCK信息

select object_id('TABLE_NAME')

select object_name(OBJECT_ID)

分別用來顯示 object_id, object_name

select top 10 req_transactionUOW,* From master.dbo.syslockinfo; (nolock) where req_spid=-2

顯示孤立的分布式事務的UOW

KILL '3BD5C9FA-8B56-4B15-9945-D94C2DBD364E'

終止 UOW 為3BD5C9FA-8B56-4B15-9945-D94C2DBD364E的孤立分布式事務(會話 ID = -2)

KILL 73

終止指定會話 ID 73

注意:

1.如果指定的會話 ID 或 UOW 有許多工作要撤消,則 KILL 語句可能需要一些時間來完成,特別是在涉及回滾長事務時。

2.應當小心使用 KILL,特別是正在運行重要進程時。用戶不能取消自己的進程。

SELECT @@SPID

使用 @@SPID 可顯示當前會話的會話 ID 值。

REFERENCE:

1. KILL (Transact-SQL), SQL Server 2005 聯機叢書

http://www.cnblogs.com/rickie/archive/2006/12/31/609242.html

標簽: Sql Server 數據庫
国产综合久久一区二区三区