2011-10-19 16 views
12

Performans sorunları yaşadığımız zaman veritabanımın hangi bölümlerinin kilitlendiğini görmek için sys.dm_tran_locks görünümünü kullanıyorum. resource_type veritabanı ise bu görüşü kullanarak Bir sayfa kilidinin hangi tablodan çıktığını öğrenmek için

....

  • Ben kilit hangi veritabanı öğrenmek için DB_NAME işlevini kullanabilirsiniz.

  • nesnesi ise, normalde hangi tabloyu kontrol etmek için sys.tables öğesine katılabilirim.

resource_type Sayfa veyaAnahtar yüzden tabloları kilitleme hangi iyi bir fikir edinebilirsiniz için ana tablodaki bu geri izlemek için herhangi bir yolu var mi Bununla olur?

cevap

30

Bu, resource_associated_entity_id sütunudur (Example query).

SELECT dm_tran_locks.request_session_id, 
     dm_tran_locks.resource_database_id, 
     DB_NAME(dm_tran_locks.resource_database_id) AS dbname, 
     CASE 
      WHEN resource_type = 'OBJECT' 
       THEN OBJECT_NAME(dm_tran_locks.resource_associated_entity_id) 
      ELSE OBJECT_NAME(partitions.OBJECT_ID) 
     END AS ObjectName, 
     partitions.index_id, 
     indexes.name AS index_name, 
     dm_tran_locks.resource_type, 
     dm_tran_locks.resource_description, 
     dm_tran_locks.resource_associated_entity_id, 
     dm_tran_locks.request_mode, 
     dm_tran_locks.request_status 
FROM sys.dm_tran_locks 
LEFT JOIN sys.partitions ON partitions.hobt_id = dm_tran_locks.resource_associated_entity_id 
LEFT JOIN sys.indexes ON indexes.OBJECT_ID = partitions.OBJECT_ID AND indexes.index_id = partitions.index_id 
WHERE resource_associated_entity_id > 0 
    AND resource_database_id = DB_ID() 
ORDER BY request_session_id, resource_associated_entity_id 
1

Bu kaynakla ilişkilendirilmiş object_id öğesini bulmanız gerekir ve başka bir tabloya katılmayı gerektirebilir. Örneğin,

SELECT *, OBJECT_NAME(p.object_id) 
FROM sys.dm_tran_locks l  
JOIN sys.partitions p 
ON l.resource_associated_entity_id = p.hobt_id 
WHERE resource_type = 'KEY' 

katılmadan tablolar her bir kaynak için ne olması gerektiğini anlamaya Books Online'da sys.dm_tran_locks arayın.

İlgili konular