2014-01-13 93 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')' –

相關問題