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)