回滚SQL Server上的trans和unlock表

时间:2013-04-25 09:38:26

标签: sql-server tsql transactions

Hy,有时我遇到SQL Server的问题,因为未知的事务被打开或锁定表,我读了很多建议以避免重启服务器
直到我发现这一点,它似乎工作了 你有其他建议释放锁和回滚trans?
因为我保留在生产服务器上运行它

USE master;
GO
ALTER DATABASE [db_dev]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [db_dev]
SET MULTI_USER;
GO

2 个答案:

答案 0 :(得分:9)

您可以使用

查看阻止您的流程的内容
sp_who2

然后

kill spid

将其设置为single_user然后还原将删除与该数据库的所有连接。在生产服务器上可能非常危险。

答案 1 :(得分:0)

如果您锁定了表,则可以使用以下代码将其杀死:

    SELECT OBJECT_NAME(P.object_id) AS TableName,
           Resource_type,
           request_session_id
    FROM sys.dm_tran_locks AS L
         JOIN sys.partitions AS P ON L.resource_associated_entity_id = p.hobt_id
    WHERE OBJECT_NAME(P.object_id) = '<Table_Name>';

    GO
    Kill session_ID