sys.dm_tran_current_transaction (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Mengembalikan satu baris yang menampilkan informasi status transaksi dalam sesi saat ini.

Catatan

Untuk memanggil ini dari Azure Synapse Analytics atau Analytics Platform System (PDW), gunakan nama sys.dm_pdw_nodes_tran_current_transaction. Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.

Sintaks

  
sys.dm_tran_current_transaction  

Tabel Dikembalikan

Nama kolom Jenis data Deskripsi
transaction_id bigint ID transaksi rekam jepret saat ini.
transaction_sequence_num bigint Nomor urut transaksi yang menghasilkan versi rekaman.
transaction_is_snapshot bit Status isolasi rekam jepret. Nilai ini adalah 1 jika transaksi dimulai di bawah isolasi rekam jepret. Jika tidak, nilainya adalah 0.
first_snapshot_sequence_num bigint Jumlah urutan transaksi terendah dari transaksi yang aktif saat rekam jepret diambil. Pada eksekusi, transaksi rekam jepret mengambil rekam jepret dari semua transaksi aktif pada saat itu. Untuk transaksi nonsnapshot, kolom ini menunjukkan 0.
last_transaction_sequence_num bigint Nomor urut global. Nilai ini menunjukkan nomor urutan transaksi terakhir yang dihasilkan oleh sistem.
first_useful_sequence_num bigint Nomor urut global. Nilai ini menunjukkan nomor urutan transaksi terlama dari transaksi yang memiliki versi baris yang harus dipertahankan di penyimpanan versi. Versi baris yang dibuat oleh transaksi sebelumnya dapat dihapus.
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.

Pada tujuan layanan SQL Database Basic, S0, dan S1, dan untuk database di kumpulan elastis, akun admin server, akun admin Microsoft Entra, atau keanggotaan dalam##MS_ServerStateReader## peran server diperlukan. 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.

Contoh

Contoh berikut menggunakan skenario pengujian di mana empat transaksi bersamaan, masing-masing diidentifikasi oleh nomor urutan transaksi (XSN), berjalan dalam database yang memiliki opsi ALLOW_SNAPSHOT_ISOLATION dan READ_COMMITTED_SNAPSHOT diatur ke AKTIF. Transaksi berikut berjalan:

  • XSN-57 adalah operasi pembaruan di bawah isolasi yang dapat diserialisasikan.

  • XSN-58 sama dengan XSN-57.

  • XSN-59 adalah operasi pilih di bawah isolasi rekam jepret.

  • XSN-60 sama dengan XSN-59.

Kueri berikut dijalankan dalam cakupan setiap transaksi.

SELECT   
    transaction_id  
   ,transaction_sequence_num  
   ,transaction_is_snapshot  
   ,first_snapshot_sequence_num  
   ,last_transaction_sequence_num  
   ,first_useful_sequence_num  
  FROM sys.dm_tran_current_transaction;  

Berikut adalah hasil untuk XSN-59.

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9387                 59                       1                         
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
57                               61                        
  
first_useful_sequence_num  
-------------------------  
57  

Output menunjukkan bahwa XSN-59 adalah transaksi rekam jepret yang menggunakan XSN-57 sebagai transaksi pertama yang aktif ketika XSN-59 dimulai. Ini berarti bahwa XSN-59 membaca data yang dilakukan oleh transaksi yang memiliki nomor urutan transaksi yang lebih rendah dari XSN-57.

Berikut adalah hasil untuk XSN-57.

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9295                 57                       0  
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
NULL                        61  
  
first_useful_sequence_num  
-------------------------  
57  

Karena XSN-57 bukan transaksi rekam jepret, first_snapshot_sequence_num adalah NULL.

Lihat Juga

Tampilan dan Fungsi Manajemen Dinamis (Transact-SQL)
Tampilan dan Fungsi Manajemen Dinamis Terkait Transaksi (Transact-SQL)