【发布时间】:2009-03-01 07:51:35
【问题描述】:
我们如何找到数据库中被锁定的表?请,建议。
【问题讨论】:
标签: sql-server sql-server-2008 sql-server-2005 sql-server-2012 sql-server-2008-r2
我们如何找到数据库中被锁定的表?请,建议。
【问题讨论】:
标签: sql-server sql-server-2008 sql-server-2005 sql-server-2012 sql-server-2008-r2
您可以使用 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
【讨论】:
读取 sp_lock 信息时,使用 OBJECT_NAME( ) 函数从表的 ID 号中获取表的名称,例如:
选择对象名称(16003073)
编辑:
微软提供了另一个 proc 报告没有 ID 转换的对象:http://support.microsoft.com/kb/q255596/
【讨论】: