Aracılığıyla paylaş


sys.dm_tran_version_store (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Sürüm mağazasında tüm sürüm kayıtlarını gösteren sanal bir tablo döndürür. sys.dm_tran_version_store çalışması verimsizdir çünkü tüm sürüm deposunu sorgulatır ve sürüm deposu çok büyük olabilir.

Her sürümlü kayıt, bazı takip veya durum bilgileriyle birlikte ikili veri olarak saklanır. Veritabanı tablolarındaki kayıtlara benzer şekilde, sürüm deposu kayıtları da 8192 baytlık sayfalarda saklanır. Bir kayıt 8192 baytı aşarsa, kayıt iki farklı kayda bölünür.

Versiyonlu kayıt ikili olarak saklandığı için, farklı veritabanlarından farklı derlemelerde bir sorun yaşanmaz. Önceki satır sürümlerini ikili temsilde bulmak için sys.dm_tran_version_store kullanın, sürüm mağazasında mevcut oldukları gibi.

Sözdizimi

sys.dm_tran_version_store  

Döndürülen Tablo

Sütun adı Veri türü Description
transaction_sequence_num bigint Kayıt versiyonunu oluşturan işlemin sıra numarası.
version_sequence_num bigint Versiyon kaydı dizi numarası. Bu değer, sürüm üreten işlemde benzersizdir.
database_id int Sürümlü kaydın veritabanı kimliği.

Azure SQL Veritabanı'nda değerler tek bir veritabanı veya elastik havuz içinde benzersizdir, ancak mantıksal sunucu içinde değildir.
rowset_id bigint Kaydın sıra seti kimliği.
durum tinyint Bir versiyon edilmiş kaydın iki kayda bölünüp bölünmediğini gösterir. Değer 0 ise, kayıt bir sayfada saklanır. Değer 1 ise, kayıt iki farklı sayfada saklanan iki kayda bölünür.
min_length_in_bytes smallint Kaydın minimum uzunluğu bayt cinsinden.
record_length_first_part_in_bytes smallint Versiyonlanmış kaydın ilk kısmının bayt cinsinden uzunluğu.
record_image_first_part varbinary(8000) Versiyon kaydının ilk kısmının ikili görüntüsü.
record_length_second_part_in_bytes smallint Versiyon kaydının ikinci kısmının uzunluğu bayt cinsinden.
record_image_second_part varbinary(8000) Versiyon kaydının ikinci kısmının ikili görüntüsü.

Permissions

SQL Server ve SQL Yönetilen Örneği'ne VIEW SERVER STATE izni gerekir.

SQL Veritabanı Temel,S0 ve S1 hizmet hedeflerinive elastik havuzlardaki veritabanları için, sunucu yöneticisi hesabı, Microsoft Entra yönetici hesabı veya ##MS_ServerStateReader##sunucu rolü üyeliği gereklidir. Diğer tüm SQL Veritabanı hizmet hedeflerinde, veritabanında VIEW DATABASE STATE izni veya ##MS_ServerStateReader## sunucu rolü üyeliği gereklidir.

SQL Server 2022 ve üzeri için izinler

Sunucuda SUNUCU PERFORMANS DURUMUNU GÖRÜNTÜLE izni gerektirir.

Örnekler

Aşağıdaki örnek, her biri bir işlem dizisi numarası (XSN) ile tanımlanan dört eşzamanlı işlemin ALLOW_SNAPSHOT_ISOLATION ve READ_COMMITTED_SNAPSHOT seçeneklerinin ON olarak ayarlandığı bir veritabanında çalıştığı bir test senaryosunu kullanır. Aşağıdaki işlemler devam etmektedir:

  • XSN-57, serileştirilebilir izolasyon altında bir güncelleme işlemidir.

  • XSN-58, XSN-57 ile aynıdır.

  • XSN-59, anlık görüntü izolasyonu altında seçilmiş bir işlemdir.

  • XSN-60, XSN-59 ile aynıdır.

Aşağıdaki sorgu yürütülür.

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;  

Sonuç kümesi aşağıdadır.

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  

Çıktı, XSN-57'nin bir tablodan üç satır versiyonu oluşturduğunu, XSN-58'in ise başka bir tablodan bir satır versiyonu oluşturduğunu gösteriyor.

Ayrıca Bkz.

Dinamik Yönetim Görünümleri ve İşlevleri (Transact-SQL)
İşlemle İlgili Dinamik Yönetim Görünümleri ve İşlevleri (Transact-SQL)