嗨,有时候我会遇到因为未知事务未关闭或表被锁定而导致SQL Server
出现问题。我读了很多建议,以避免重新启动服务器,直到我发现了这个方法,它似乎起作用了。
你有其他的建议来释放锁并回滚事务吗?因为我对在生产服务器上运行此操作持保留态度。
USE master;
GO
ALTER DATABASE [db_dev]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [db_dev]
SET MULTI_USER;
GO
嗨,有时候我会遇到因为未知事务未关闭或表被锁定而导致SQL Server
出现问题。我读了很多建议,以避免重新启动服务器,直到我发现了这个方法,它似乎起作用了。
你有其他的建议来释放锁并回滚事务吗?因为我对在生产服务器上运行此操作持保留态度。
USE master;
GO
ALTER DATABASE [db_dev]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [db_dev]
SET MULTI_USER;
GO
您可以使用以下方法检查阻止进程的原因:
sp_who2
然后
kill spid
将其设置为single_user,然后还原回去会删除该数据库的所有连接。 在生产服务器上可能非常危险。
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
KILL
命令关闭单个连接,而无需重启服务器或使数据库离线。 - Pondlife