Sql Server 常常會遇到 Lock 的問題,重點是要查出哪邊卡住,並且看如何處理,以下查詢方式。
SELECT r.session_id,
r.status AS [指令狀態],
r.command AS [指令類型],
r.wait_time/1000.0 AS [等待時間(秒)],
s.client_interface_name AS [連線資料庫的驅動程式],
s.host_name AS [電腦名稱],
s.program_name AS [執行程式名稱],
t.text AS [執行的SQL語法],
r.blocking_session_id AS [被鎖定卡住的session_id]
FROM sys.dm_exec_requests r
INNER JOIN sys.dm_exec_sessions s
ON r.session_id = s.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE s.is_user_process = 1;
上圖可以看到被 session_id 79 卡住了,但重點是時間非常就,狀態是 KILLED/ROLLBACK,表示已經執行KILL了,還是卡住。這就需要重啟SQL Server了。
若是一般的執行,應該Kill就可以了。
參考資料:
https://www.uuu.com.tw/Public/content/article/20/20201207.htm