在SQL Server中查找锁定表

时间:2009-03-01 07:51:36

标签: sql-server sql-server-2008 sql-server-2005 sql-server-2012 sql-server-2008-r2

我们如何找到数据库中锁定的表?请建议。

2 个答案:

答案 0 :(得分:84)

您可以使用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

答案 1 :(得分:8)

sp_lock

在读取sp_lock信息时,使用OBJECT_NAME()函数从其ID号中获取表的名称,例如:

SELECT object_name(16003073)

编辑:

microsoft提供了另一个proc,它报告没有ID转换的对象:http://support.microsoft.com/kb/q255596/