DBAtlas · Veritabanı operasyon atlası

En eski açık transaction'ı bul (ACTIVE_TRANSACTION)

SQL ServerYedek & Log

Komut

USE [Musteri];
DBCC OPENTRAN;

-- Detayli: uzun suren acik islemleri ve sahibini gor:
SELECT s.session_id, s.login_name, s.host_name, s.program_name,
       t.transaction_id,
       DATEDIFF(SECOND, t.transaction_begin_time, GETDATE()) AS sure_sn,
       t.transaction_begin_time
FROM   sys.dm_tran_active_transactions t
  JOIN sys.dm_tran_session_transactions st ON st.transaction_id = t.transaction_id
  JOIN sys.dm_exec_sessions s ON s.session_id = st.session_id
ORDER BY t.transaction_begin_time;

Ne yapar?

En eski açık (commit/rollback edilmemiş) transaction'ı ve onu tutan oturumu gösterir. Açık transaction, logun kesilmesini (LOG_REUSE_WAIT = ACTIVE_TRANSACTION) engeller.

Ne zaman kullanılır?

Log yedeği alındığı halde log küçülmüyorsa, log_reuse_wait_desc = ACTIVE_TRANSACTION olduğunda kök nedeni bulmak için.

Dikkat

Uzun açık transaction'ı tutan oturumu KILL etmeden önce iş sahibiyle teyit et; rollback uzun sürebilir. Sadece sorgu; risksiz.

DBAtlas'ta aç →

İlgili