Sdílet prostřednictvím


sys.dm_tran_version_store (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Vrací virtuální tabulku, která zobrazuje všechny záznamy verzí ve skladu verzí. sys.dm_tran_version_store je neefektivní na provoz, protože dotazuje celé úložiště verzí a úložiště verzí může být velmi rozsáhlé.

Každý verzovaný záznam je uložen jako binární data spolu s některými sledujícími nebo stavovými informacemi. Podobně jako záznamy v databázových tabulkách jsou záznamy s uložením verzí uloženy na stránkách o velikosti 8192 bajtů. Pokud záznam překročí 8192 bajtů, bude rozdělen na dva různé záznamy.

Protože je verzovaný záznam uložen jako binární, nejsou problémy s různými třídami z různých databází. Použijte sys.dm_tran_version_store k nalezení předchozích verzí řádků v binární reprezentaci, jak existují ve skladu verzí.

Syntaxe

sys.dm_tran_version_store  

Vrácená tabulka

Název sloupce Datový typ Description
transaction_sequence_num bigint Pořadové číslo transakce, která generuje verzi záznamu.
version_sequence_num bigint Sekvenční číslo záznamu verze. Tato hodnota je v rámci transakce generující verzi jedinečná.
database_id int Databázové ID verze záznamu.

Ve službě Azure SQL Database jsou hodnoty jedinečné v rámci jedné databáze nebo elastického fondu, ale ne v rámci logického serveru.
rowset_id bigint Identifikace řádků záznamu.
stav tinyint Označuje, zda byl verzovaný záznam rozdělen na dva záznamy. Pokud je hodnota 0, záznam je uložen na jedné stránce. Pokud je hodnota 1, záznam se rozdělí na dva záznamy, které jsou uloženy na dvou různých stránkách.
min_length_in_bytes smallint Minimální délka záznamu v bajtech.
record_length_first_part_in_bytes smallint Délka první části verze záznamu v bajtech.
record_image_first_part varbinary(8000) Binární obraz první části záznamu verzí.
record_length_second_part_in_bytes smallint Délka druhé části záznamu verze v bajtech.
record_image_second_part varbinary(8000) Binární obraz druhé části záznamu verzí.

Povolení

Na SQL Serveru a službě SQL Managed Instance vyžaduje VIEW SERVER STATE oprávnění.

U cílů služby SQL Database Basic, S0 a S1 a pro databáze v elastických fondech se vyžaduje účet správce serveru , účet správce Microsoft Entra nebo členství v ##MS_ServerStateReader##roli serveru . U všech ostatních cílů VIEW DATABASE STATE služby SQL Database se vyžaduje buď oprávnění k databázi, nebo členství v ##MS_ServerStateReader## roli serveru.

Oprávnění pro SQL Server 2022 a novější

Vyžaduje oprávnění ZOBRAZIT STAV VÝKONU SERVERU na serveru.

Examples

Následující příklad používá testovací scénář, ve kterém v databázi běží čtyři souběžné transakce, každá označená sekvenčním číslem transakce (XSN), která má nastavené možnosti ALLOW_SNAPSHOT_ISOLATION a READ_COMMITTED_SNAPSHOT na ON. Probíhají následující transakce:

  • XSN-57 je aktualizační operace v rámci serializovatelné izolace.

  • XSN-58 je stejný jako XSN-57.

  • XSN-59 je vybraná operace při izolaci snímků.

  • XSN-60 je stejný jako XSN-59.

Následující dotaz je vykonán.

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;  

Tady je soubor výsledků.

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  

Výstup ukazuje, že XSN-57 vytvořil tři řádkové verze z jedné tabulky a XSN-58 vytvořil jednu řádkovou verzi z jiné tabulky.

Viz také

Zobrazení a funkce dynamické správy (Transact-SQL)
Zobrazení a funkce dynamické správy související s transakcemi (Transact-SQL)