DBAtlas · Veritabanı operasyon atlası

Blocking (lock) zincirini bul

SQL ServerOturum

Komut

SELECT r.session_id            AS bekleyen_spid,
       r.blocking_session_id  AS engelleyen_spid,
       r.wait_type,
       r.wait_time / 1000.0   AS bekleme_sn,
       r.status, r.command,
       DB_NAME(r.database_id) AS db,
       t.text                 AS bekleyen_sorgu
FROM   sys.dm_exec_requests r
  CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE  r.blocking_session_id <> 0
ORDER BY r.wait_time DESC;

-- Zincirin en tepesindeki (kok) engelleyeni bulmak icin blocking_session_id'si
-- kendisi engellenmemis SPID'i ara.

Ne yapar?

Bekleyen ve onları engelleyen oturumları, bekleme süresi ve çalıştırdıkları sorguyla listeler; lock zincirini görünür kılar.

Ne zaman kullanılır?

"Uygulama takıldı / zaman aşımı" şikayetlerinde lock çakışmasının kaynağını bulmak için.

Dikkat

Kök engelleyeni (kimse tarafından engellenmeyen ama başkalarını engelleyen SPID) öldürmeden önce iş sahibiyle teyit et. Sadece sorgu; risksiz.

DBAtlas'ta aç →

İlgili