SqlServer 数据库表死锁
数据库表死锁
spid 锁表进程
tableName 被锁表名
declare @spid int
Set @spid = 618 --锁表进程
declare @sql varchar(1000)
set @sql='kill '+cast(@spid as varchar)
exec(@sql)
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName
from sys.dm_tran_locks where resource_type='OBJECT'
SELECT
tl.request_session_id AS spid,
OBJECT_NAME(tl.resource_associated_entity_id) AS tableName,
er.status,
er.command,
est.text AS sql_text
FROM
sys.dm_tran_locks AS tl
LEFT JOIN
sys.dm_exec_requests AS er ON tl.request_session_id = er.session_id
CROSS APPLY
sys.dm_exec_sql_text(er.sql_handle) AS est
WHERE
tl.resource_type = 'OBJECT'
DECLARE @kill_spid NVARCHAR(10)
DECLARE spid_cursor CURSOR FOR
SELECT
CAST(tl.request_session_id AS NVARCHAR(10)) AS spid
FROM
sys.dm_tran_locks AS tl
LEFT JOIN
sys.dm_exec_requests AS er ON tl.request_session_id = er.session_id
CROSS APPLY
sys.dm_exec_sql_text(er.sql_handle) AS est
WHERE
tl.resource_type = 'OBJECT' -- 请根据实际情况调整这里的条件
OPEN spid_cursor
FETCH NEXT FROM spid_cursor INTO @kill_spid
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC('KILL ' + @kill_spid)
FETCH NEXT FROM spid_cursor INTO @kill_spid
END
CLOSE spid_cursor
DEALLOCATE spid_cursor
浙公网安备 33010602011771号