Bagikan melalui


sys.dm_tran_active_transactions (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistem Platform Analitik (PDW)Titik akhir analitik SQL di Microsoft FabricGudang di Microsoft FabricDatabase SQL di Microsoft Fabric

sys.dm_tran_active_transactions Tampilan manajemen dinamis mengembalikan informasi tentang transaksi untuk instans.

Nama kolom Jenis Data Deskripsi
transaction_id bigint ID transaksi di tingkat instans, bukan tingkat database. Ini hanya unik di semua database dalam instans tetapi tidak unik di semua instans server.
name nvarchar(32) Nama transaksi. Ini ditimpa jika transaksi ditandai dan nama yang ditandai menggantikan nama transaksi.
transaction_begin_time datetime Waktu transaksi dimulai.
transaction_type int Jenis transaksi.

1 = Transaksi baca/tulis

2 = Transaksi baca-saja

3 = Transaksi sistem

4 = Transaksi terdistribusi
transaction_uow pengidentifikasi unik Pengidentifikasi unit transaksi kerja (UOW) untuk transaksi terdistribusi. Koordinator transaksi terdistribusi Microsoft (MS DTC) menggunakan pengidentifikasi UOW untuk bekerja dengan transaksi terdistribusi.
transaction_state int 0 = Transaksi belum sepenuhnya diinisialisasi.

1 = Transaksi telah diinisialisasi tetapi belum dimulai.

2 = Transaksi aktif.

3 = Transaksi telah berakhir. Digunakan untuk transaksi baca-saja.

4 = Proses penerapan telah dimulai pada transaksi terdistribusi. Hanya untuk transaksi terdistribusi. Transaksi terdistribusi masih aktif tetapi pemrosesan lebih lanjut tidak dapat dilakukan.

5 = Transaksi dalam keadaan siap dan resolusi menunggu.

6 = Transaksi telah dilakukan.

7 = Transaksi sedang digulung balik.

8 = Transaksi telah digulung balik.
transaction_status int Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.
transaction_status2 int Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.
dtc_state int Berlaku untuk: Azure SQL Database.

1 = AKTIF

2 = SIAP

3 = BERKOMITMEN

4 = DIBATALKAN

5 = DIPULIHKAN
dtc_status int Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.
dtc_isolation_level int Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.
filestream_transaction_id varbinary(128) Berlaku untuk: Azure SQL Database.

Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.
pdw_node_id int Berlaku untuk: Azure Synapse Analytics, Analytics Platform System (PDW)

Pengidentifikasi untuk simpul tempat distribusi ini aktif.

Izin

Pada SQL Server dan SQL Managed Instance, memerlukan VIEW SERVER STATE izin.

Di Microsoft Fabric, keanggotaan dalam peran ruang kerjaKontributor atau peran yang lebih istimewa diperlukan untuk mengkueri sys.dm_tran_active_transactions.

Pada tujuan layanan SQL Database Basic, S0 Pada semua tujuan layanan SQL Database lainnya, izin VIEW DATABASE STATE pada database, atau keanggotaan dalam ##MS_ServerStateReader## peran server diperlukan.

Izin untuk SQL Server 2022 dan yang lebih baru

Memerlukan izin TAMPILKAN STATUS PERFORMA SERVER pada server.

Komentar

Untuk memanggil tampilan manajemen dinamis ini dari Azure Synapse Analytics atau Analytics Platform System (PDW), gunakan nama sys.dm_pdw_nodes_tran_active_transactions Sintaks ini tidak didukung oleh kumpulan SQL nirserver di Azure Synapse Analytics.

Contoh

J. Gunakan sys.dm_tran_active_transactions dengan DMV lain untuk menemukan informasi tentang transaksi aktif

Contoh berikut menunjukkan transaksi aktif apa pun pada sistem. Kueri memberikan informasi terperinci tentang transaksi, sesi pengguna, aplikasi yang dikirimkan, dan kueri yang memulainya dan banyak lainnya.

SELECT
  GETDATE() as now,
  DATEDIFF(SECOND, transaction_begin_time, GETDATE()) as tran_elapsed_time_seconds,
  st.session_id,
  txt.text, 
  *
FROM
  sys.dm_tran_active_transactions at
  INNER JOIN sys.dm_tran_session_transactions st ON st.transaction_id = at.transaction_id
  LEFT OUTER JOIN sys.dm_exec_sessions sess ON st.session_id = sess.session_id
  LEFT OUTER JOIN sys.dm_exec_connections conn ON conn.session_id = sess.session_id
    OUTER APPLY sys.dm_exec_sql_text(conn.most_recent_sql_handle)  AS txt
ORDER BY
  tran_elapsed_time_seconds DESC;