sys.dm_tran_transactions_snapshot (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Returnerar en virtuell tabell för sequence_number av transaktioner som är aktiva när varje snapshot-transaktion startar. Den information som denna vy återlämnar kan hjälpa dig att göra följande:

  • Hitta antalet aktuella snapshot-transaktioner.

  • Identifiera dataändringar som ignoreras av en viss snapshot-transaktion. För en transaktion som är aktiv när en snapshot-transaktion startar, ignoreras alla dataändringar av den transaktionen, även efter att transaktionen genomförts, av snapshot-transaktionen.

Till exempel, betrakta följande utdata från 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  

Kolumnen transaction_sequence_num identifierar transaktionssekvensnumret (XSN) för de aktuella ögonblickskopiska transaktionerna. Utdata visar två: 59 och 60. Kolumnen snapshot_sequence_num identifierar transaktionssekvensnumret för de transaktioner som är aktiva när varje snapshot-transaktion startar.

Resultatet visar att snapshot-transaktionen XSN-59 startar medan två aktiva transaktioner, XSN-57 och XSN-58, körs. Om XSN-57 eller XSN-58 gör dataändringar ignorerar XSN-59 ändringarna och använder radversionering för att upprätthålla en transaktionellt konsekvent vy av databasen.

Snapshot-transaktion XSN-60 ignorerar dataändringar gjorda av XSN-57 och XSN-58 samt XSN 59.

Tabell returnerad

Kolumnnamn Datatyp Description
transaction_sequence_num bigint Transaktionssekvensnummer (XSN) för en ögonblicksbildstransaktion.
snapshot_id int Snapshot-ID för varje Transact-SQL-sats startade under read-committed med radversionering. Detta värde används för att generera en transaktionellt konsistent vy av databasen som stöder varje fråga som körs under read-committed med radversionering.
snapshot_sequence_num bigint Transaktionssekvensnummer för en transaktion som var aktiv när snapshot-transaktionen startade.

Permissions

På SQL Server och SQL Managed Instance kräver VIEW SERVER STATE behörighet.

I SQL Database Grundläggande, S0och S1 tjänstmål och för databaser i elastiska pooler, serveradministratör konto, Microsoft Entra-administratör konto eller medlemskap i ##MS_ServerStateReader##serverrollen krävs. För alla andra SQL Database-tjänstmål krävs antingen VIEW DATABASE STATE behörighet för databasen eller medlemskap i ##MS_ServerStateReader## serverrollen.

Behörigheter för SQL Server 2022 och senare

Kräver BEHÖRIGHET FÖR VISNINGSSERVERNS PRESTANDATILLSTÅND på servern.

Anmärkningar

När en snapshot-transaktion startar registrerar databasmotorn alla transaktioner som är aktiva vid den tidpunkten. sys.dm_tran_transactions_snapshot rapporterar denna information för alla för närvarande aktiva snapshot-transaktioner.

Varje transaktion identifieras av ett transaktionssekvensnummer som tilldelas när transaktionen börjar. Transaktioner startar när en BEGIN TRANSAKTION eller BEGIN WORK-sats exekveras. Dock tilldelar databasmotorn transaktionssekvensnumret med exekveringen av det första Transact-SQL-satsen som får tillgång till data efter BEGIN TRANSACTION- eller BEGIN WORK-satsen. Transaktionssekvensnumren ökar med ett.

Se även

Dynamiska hanteringsvyer och funktioner (Transact-SQL)
transaktionsrelaterade dynamiska hanteringsvyer och funktioner (Transact-SQL)