2014-01-13 62 views
2

无论出于何种原因,数据库中的一个特定表开始不能在特定表上完成任何查询结果。它说'执行查询...'并没有完成。如何检查SQL表是否被锁定以查询?

像:

select * from foo 

其他表返回行。

如何/我在哪里可以检查表是否被锁定?

+0

'exec sp_lock exec sp_who2' – usr

+0

只有一个注释 - 尝试从foo(无锁)。如果运行得更快,那可能是一个锁。 – Paparazzi

回答

2

检查该样本

select 
    object_name(P.object_id) as TableName 
    , resource_type 
    , resource_description 
    , request_mode 
    , CASE REQUEST_MODE 
        WHEN 'S'  THEN 'Shared' 
        WHEN 'U'  THEN 'Update' 
        WHEN 'X'  THEN 'Exclusive' 
        WHEN 'IS'  THEN 'Intent Shared' 
        WHEN 'IU'  THEN 'Intent Update' 
        WHEN 'IX'  THEN 'Intent Exclusive' 
        WHEN 'SIU'  THEN 'Shared Intent Update' 
        WHEN 'SIX'  THEN 'Shared Intent Exclusive' 
        WHEN 'UIX'  THEN 'Update Intent Exclusive' 
        WHEN 'BU'  THEN 'Bulk Update' 
        WHEN 'RangeS_S' THEN 'Shared Range S' 
        WHEN 'RangeS_U' THEN 'Shared Range U' 
        WHEN 'RangeI_N' THEN 'Insert Range' 
        WHEN 'RangeI_S' THEN 'Insert Range S' 
        WHEN 'RangeI_U' THEN 'Insert Range U' 
        WHEN 'RangeI_X' THEN 'Insert Range X' 
        WHEN 'RangeX_S' THEN 'Exclusive range S' 
        WHEN 'RangeX_U' THEN 'Exclusive range U' 
        WHEN 'RangeX_X' THEN 'Exclusive range X' 
        WHEN 'SCH-M' THEN 'Schema-Modification' 
        WHEN 'SCH-S' THEN 'Schema-Stability' 

     ELSE NULL 
     END AS REQUEST_LOCK_MODE 

FROM sys.dm_tran_locks AS L 
     join sys.partitions AS P 
     on L.resource_associated_entity_id = p.hobt_id 

REF:http://sqlblog.foxraven.com/2012/01/check-to-see-if-table-is-locked.html

+0

并加入:WHERE p.object_id = OBJECT_ID('foo')' –

相关问题