程式碼如以下:
SELECT request_session_id AS spid, resource_type AS rt, resource_databASe_id AS rdb, (CASE resource_type WHEN 'OBJECT' then object_name(resource_ASsociated_entity_id) WHEN 'DATABASE' then '<db_name>' ELSE (SELECT object_name(object_id) FROM sys.partitions WHERE hobt_id = resource_ASsociated_entity_id) END) AS objname, resource_description AS rd, request_mode AS rm, request_status AS rs FROM sys.dm_tran_locks
找到被鎖定的spid名稱 (rm狀態為 X,IX)
假設是spid 61
直接下 kill 61 即可!
===========狀態==========
spid:該次Request的編號。
objname:該次Request處理的物件,從圖中可以看到Customers。
rm/rs:該次Request的鎖定狀態。
rm = X 表示 dead lock,一般就是我們需要處理的。
rm = IX 表示 wait lock ,這種是因為前一個Request已經dead lock,而被pending的狀態。
rm = S or IS 表示 shared lock,一般的長時間查詢就會顯示這種狀態。
沒有留言:
張貼留言