SELECT spid FROM master..sysprocesses WHERE db_name(dbid) = 'YourDatabase' AND spid <> @@SPID AND dbid <> 0;
SELECT
request_session_id AS spid,
OBJECT_NAME(resource_associated_entity_id) AS tableName
FROM sys.dm_tran_locks
WHERE resource_type = 'OBJECT';
說明: spid 為鎖定進程 ID,tableName 為被鎖定表名。
DECLARE @spid INT = 57; -- 目標 SPID DECLARE @sql VARCHAR(1000) = 'KILL ' + CAST(@spid AS VARCHAR); EXEC(@sql);
DECLARE @kill VARCHAR(MAX) = '';
SELECT @kill = @kill + 'KILL ' + CAST(spid AS VARCHAR) + '; '
FROM master..sysprocesses
WHERE dbid = DB_ID('YourDatabase') AND spid <> @@SPID;
EXEC(@kill);
-- 檢視阻塞鏈
SELECT
blocking_session_id AS BlockerSPID,
session_id AS VictimSPID,
wait_type,
wait_time_ms,
wait_resource
FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id > 0;
PROCESSADMIN 或 SYSADMIN 角色現代環境優先使用 sys.dm_tran_locks 定位鎖定表格與進程,搭配 KILL 解除阻塞。建議建立監控儀表板自動偵測長時間阻塞並告警。