Megosztás a következőn keresztül:


sys.dm_tran_version_store (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Egy virtuális táblát ad vissza, amely megjeleníti az összes verziórekordot a verzióboltban. sys.dm_tran_version_store hatékonytalan futtatni, mert az egész verzióraktárt lekérdezi, és a verziótároló nagyon nagy lehet.

Minden verziózott rekordot bináris adatként tárolnak, némi követési vagy státuszinformációval együtt. Hasonlóan az adatbázis táblákban lévő rekordokhoz, a verziótároló rekordok 8192 bájtos oldalakon vannak tárolva. Ha egy rekord meghaladja a 8192 bájtot, a rekordot két különböző rekord között osztják fel.

Mivel a verziózott rekord bináris állapotban van tárolva, nincs probléma különböző adatbázisokból származó különböző összeállításokkal. Használd sys.dm_tran_version_store-t , hogy megtaláld a sorok korábbi verzióit bináris ábrázolásban, ahogy azok a verzió áruházban léteznek.

Szemantika

sys.dm_tran_version_store  

Visszaadott tábla

Oszlop név Adattípus Description
transaction_sequence_num bigint A tranzakció sorszáma, amely a rekordverziót generálja.
version_sequence_num bigint Verzió rekord szekvenciászám. Ez az érték egyedi a verziógeneráló tranzakción belül.
database_id int A verziózott rekord adatbázis-azonosítója.

Az Azure SQL Database-ben az értékek egyediek egyetlen adatbázisban vagy rugalmas készletben, de nem logikai kiszolgálón belül.
rowset_id bigint A rekord sorsorazonosítója.
állapot tinyint Jelzi, hogy egy verziózott rekordot két lemez között osztottak-e fel. Ha az érték 0, a rekord egy oldalon tárolódik. Ha az érték 1, a rekord két bejegyzésre oszlik, amelyek két különböző oldalon tárolódnak.
min_length_in_bytes smallint A rekord minimális hossza bájtokban.
record_length_first_part_in_bytes smallint A verziózott lemez első részének hossza bájtokban.
record_image_first_part varbinary(8000) A verzió első részének bináris képe.
record_length_second_part_in_bytes smallint A verzió második részének hossza bájtokban.
record_image_second_part varbinary(8000) A verzió rekordjának második részének bináris képe.

Permissions

Az SQL Serveren és a felügyelt SQL-példányon VIEW SERVER STATE engedély szükséges.

Az SQL Database Alapszintű, S0és S1 szolgáltatás célkitűzésein, valamint rugalmas készletekbenlévő adatbázisok esetében a kiszolgálói rendszergazdai fiókra, a Microsoft Entra rendszergazdai fiókra vagy a ##MS_ServerStateReader##kiszolgálói szerepkör tagságára van szükség. Az SQL Database szolgáltatás minden más célkitűzéséhez vagy az adatbázis VIEW DATABASE STATE engedélyére, vagy a ##MS_ServerStateReader## kiszolgálói szerepkör tagságára van szükség.

Engedélyek az SQL Server 2022-hez és újabb verziókhoz

A KISZOLGÁLÓ TELJESÍTMÉNYÁLLAPOTÁNAK MEGTEKINTÉSE engedélyre van szükség a kiszolgálón.

Példák

A következő példa egy teszthelyzetet használ, amelyben négy egyidejű tranzakció, mindegyiket egy tranzakciósorozat számmal (XSN) azonosítva, egy olyan adatbázisban fut, amelynek ALLOW_SNAPSHOT_ISOLATION és READ_COMMITTED_SNAPSHOT opciói ON-ra vannak állítva. A következő tranzakciók zajlanak:

  • Az XSN-57 egy frissítő művelet, amely sorozatos izolációval rendelkezik.

  • Az XSN-58 ugyanaz, mint az XSN-57.

  • Az XSN-59 egy kiválasztott művelet snapshot izoláció alatt.

  • Az XSN-60 ugyanaz, mint az XSN-59.

A következő lekérdezést hajtják végre.

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;  

Itt van az eredmények összessége.

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  

A kimenet azt mutatja, hogy az XSN-57 három sorverziót hozott létre egy táblából, míg az XSN-58 egy sorverziót egy másik táblából.

Lásd még:

Dinamikus felügyeleti nézetek és függvények (Transact-SQL)
Tranzakcióval kapcsolatos dinamikus felügyeleti nézetek és függvények (Transact-SQL)