Sdílet prostřednictvím


sys.dm_tran_transactions_snapshot (Transact-SQL)

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

Vrací virtuální tabulku pro sequence_number transakcí, které jsou aktivní při zahájení každé snapshot transakce. Informace, které tento pohled vrátí, vám mohou pomoci udělat následující:

  • Najděte počet aktuálně aktivních snapshot transakcí.

  • Identifikujte úpravy dat, které jsou ignorovány konkrétní transakcí snapshotu. U transakce, která je aktivní při zahájení snapshot transakce, jsou všechny úpravy dat touto transakcí, i po jejím potvrzení, ignorovány snapshot transakcí.

Například zvažme následující výstup z sys.dm_tran_transactions_snapshot:

transaction_sequence_num snapshot_id snapshot_sequence_num  
------------------------ ----------- ---------------------  
59                       0           57  
59                       0           58  
60                       0           57  
60                       0           58  
60                       0           59  
60                       3           57  
60                       3           58  
60                       3           59  
60                       3           60  

Sloupec transaction_sequence_num identifikuje číslo sekvence transakcí (XSN) aktuálních snapshot transakcí. Výstup ukazuje dva: 59 a 60. Sloupec snapshot_sequence_num identifikuje pořadové číslo transakcí u transakcí, které jsou aktivní při zahájení každé snapshot transakce.

Výstup ukazuje, že snapshot transakce XSN-59 začíná, zatímco běží dvě aktivní transakce, XSN-57 a XSN-58. Pokud XSN-57 nebo XSN-58 provádí úpravy dat, XSN-59 změny ignoruje a používá verzování řádků k udržení transakčního konzistentního pohledu na databázi.

Snapshot transakce XSN-60 ignoruje úpravy dat provedené XSN-57 a XSN-58 a také XSN 59.

Vrácená tabulka

Název sloupce Datový typ Description
transaction_sequence_num bigint Sekvenční číslo transakce (XSN) snapshot transakce.
snapshot_id int Snapshot ID pro každý Transact-SQL příkaz začínal pod read-commit, používající verzování řádků. Tato hodnota se používá k vytvoření transakční konzistentního pohledu na databázi podporující každý dotaz spouštěný pod read-commit, přičemž se používá verzování řádku.
snapshot_sequence_num bigint Sekvenční číslo transakce, která byla aktivní, když snapshot transakce začala.

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.

Poznámky

Když začne snapshot transakce, databázový engine zaznamenává všechny transakce, které jsou v danou chvíli aktivní. sys.dm_tran_transactions_snapshot tyto informace vykazuje pro všechny aktuálně aktivní transakce snapshotů.

Každá transakce je identifikována sekvenčním číslem transakce, které je přiřazeno při jejím zahájení. Transakce začínají v okamžiku, kdy je vykonán příkaz BEGIN TRANSACTION nebo BEGIN WORK. Databázový engine však přiřazuje sekvenční číslo transakce při provedení prvního příkazu Transact-SQL, který přistupuje k datům po příkazu BEGIN TRANSACTION nebo BEGIN WORK. Čísla transakcí se zvyšují o jednu.

Viz také

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