Bagikan melalui


sys.dm_tran_version_store (T-SQL)

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

Mengembalikan tabel virtual yang menampilkan semua rekaman versi di penyimpanan versi. sys.dm_tran_version_store tidak efisien untuk dijalankan karena mengkueri seluruh penyimpanan versi, dan penyimpanan versi bisa sangat besar.

Setiap rekaman versi disimpan sebagai data biner bersama dengan beberapa informasi pelacakan atau status. Mirip dengan rekaman dalam tabel database, rekaman penyimpanan versi disimpan di halaman 8192-byte. Jika rekaman melebihi 8192 byte, rekaman akan dibagi menjadi dua rekaman yang berbeda.

Karena rekaman versi disimpan sebagai biner, tidak ada masalah dengan kolase yang berbeda dari database yang berbeda. Gunakan sys.dm_tran_version_store untuk menemukan versi baris sebelumnya dalam representasi biner seperti yang ada di penyimpanan versi.

Sintaks

sys.dm_tran_version_store  

Tabel Dikembalikan

Nama kolom Jenis data Deskripsi
transaction_sequence_num bigint Nomor urut transaksi yang menghasilkan versi rekaman.
version_sequence_num bigint Nomor urutan rekaman versi. Nilai ini unik dalam transaksi pembuatan versi.
database_id int ID database dari rekaman versi.

Di Azure SQL Database, nilainya unik dalam satu database atau kumpulan elastis, tetapi tidak dalam server logis.
rowset_id bigint ID himpunan baris rekaman.
status kecil Menunjukkan apakah rekaman versi telah dibagi di dua rekaman. Jika nilainya adalah 0, rekaman disimpan dalam satu halaman. Jika nilainya adalah 1, rekaman dibagi menjadi dua rekaman yang disimpan di dua halaman berbeda.
min_length_in_bytes smallint Panjang minimum rekaman dalam byte.
record_length_first_part_in_bytes smallint Panjang bagian pertama dari rekaman versi dalam byte.
record_image_first_part varbinary(8000) Gambar biner dari bagian pertama rekaman versi.
record_length_second_part_in_bytes smallint Panjang bagian kedua rekaman versi dalam byte.
record_image_second_part varbinary(8000) Gambar biner bagian kedua dari rekaman versi.

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.

SELECT  
    transaction_sequence_num,  
    version_sequence_num,  
    database_id rowset_id,  
    status,  
    min_length_in_bytes,  
    record_length_first_part_in_bytes,  
    record_image_first_part,  
    record_length_second_part_in_bytes,  
    record_image_second_part  
  FROM sys.dm_tran_version_store;  

Berikut set hasilnya.

transaction_sequence_num version_sequence_num database_id  
------------------------ -------------------- -----------  
57                      1                    9             
57                      2                    9             
57                      3                    9             
58                      1                    9             
  
rowset_id            status min_length_in_bytes  
-------------------- ------ -------------------  
72057594038321152    0      12                   
72057594038321152    0      12                   
72057594038321152    0      12                   
72057594038386688    0      16                   
  
record_length_first_part_in_bytes  
---------------------------------  
29                                 
29                                 
29                                 
33                                 
  
record_image_first_part                                               
--------------------------------------------------------------------  
0x50000C0073000000010000000200FCB000000001000000270000000000          
0x50000C0073000000020000000200FCB000000001000100270000000000          
0x50000C0073000000030000000200FCB000000001000200270000000000          
0x500010000100000002000000030000000300F800000000000000002E0000000000  
  
record_length_second_part_in_bytes record_image_second_part  
---------------------------------- ------------------------  
0                                  NULL  
0                                  NULL  
0                                  NULL  
0                                  NULL  

Output menunjukkan bahwa XSN-57 telah membuat tiga versi baris dari satu tabel dan XSN-58 telah membuat versi satu baris dari tabel lain.

Lihat Juga

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