在SQL Server中查找被锁定的表

32

如何在数据库中找到被锁定的表?请提供建议。

2个回答

87

你可以使用sp_lock(和sp_lock2),但在SQL Server 2005及以后的版本中,这已被弃用,建议使用查询sys.dm_tran_locks代替:

select  
    object_name(p.object_id) as TableName, 
    resource_type, resource_description
from
    sys.dm_tran_locks l
    join sys.partitions p on l.resource_associated_entity_id = p.hobt_id

8

sp_lock

在查看 sp_lock 信息时,使用 OBJECT_NAME() 函数通过其 ID 号获取表的名称,例如:

SELECT object_name(16003073)

编辑:

还有一种由Microsoft提供的过程可以报告没有ID转换的对象:http://support.microsoft.com/kb/q255596/


1
链接已经失效,而且在微软网站上搜索sp_lock2也不再返回任何结果。我猜他们最终放弃了这种方法。 - Bampfer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接