Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-databas i Microsoft Fabric
I en SQL Server-instans returnerar denna dynamiska hanteringsvy en virtuell tabell för alla aktiva transaktioner som genererar eller potentiellt får tillgång till radversioner. Transaktioner ingår under ett eller flera av följande villkor:
När antingen eller båda ALLOW_SNAPSHOT_ISOLATION och READ_COMMITTED_SNAPSHOT databasalternativ är inställda på PÅ:
Det finns en rad för varje transaktion som körs under snapshot isolation-nivå, eller read-committed isolation-nivå som använder radversionering.
Det finns en rad för varje transaktion som gör att en radversion skapas i den aktuella databasen. Till exempel genererar transaktionen en radversion genom att uppdatera eller ta bort en rad i den aktuella databasen.
När en trigger utlöses finns det en rad för transaktionen under vilken triggern körs.
När en online-indexeringsprodur körs finns det en rad för transaktionen som skapar indexet.
När sessionen Multiple Active Results Sets (MARS) är aktiverad finns det en rad för varje transaktion som får tillgång till radversioner.
Denna dynamiska hanteringsvy inkluderar inte systemtransaktioner.
Anmärkning
För att kalla detta från Azure Synapse Analytics eller Analytics Platform System (PDW), använd namnet sys.dm_pdw_nodes_tran_active_snapshot_database_transactions. Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.
Syntax
sys.dm_tran_active_snapshot_database_transactions
Tabell returnerad
| Kolumnnamn | Datatyp | Description |
|---|---|---|
| transaction_id | bigint | Unikt identifikationsnummer tilldelat för transaktionen. Transaktions-ID används främst för att identifiera transaktionen i låsningsoperationer. |
| transaction_sequence_num | bigint | Transaktionssekvensnummer. Detta är ett unikt sekvensnummer som tilldelas en transaktion när den startar. Transaktioner som inte genererar versionsposter och inte använder snapshot-skanningar kommer inte att få något transaktionssekvensnummer. |
| commit_sequence_num | bigint | Sekvensnummer som anger när transaktionen avslutas (commits eller stoppas). För aktiva transaktioner är värdet NULL. |
| is_snapshot | int | 0 = Är inte en snapshot-isoleringstransaktion. 1 = Är en ögonblicksbildsisoleringstransaktion. |
| session_id | int | ID för sessionen som startade transaktionen. |
| first_snapshot_sequence_num | bigint | Lägsta transaktionssekvensnummer för de transaktioner som var aktiva när en ögonblicksbild togs. Vid exekvering tar en ögonblicksbild av en ögonblicksbild av alla aktiva transaktioner vid den tidpunkten. För icke-snapshot-transaktioner visar denna kolumn 0. |
| max_version_chain_traversed | int | Maximal längd på versionskedjan som genomgår för att hitta den transaktionellt konsistente versionen. |
| average_version_chain_traversed | riktiga | Genomsnittligt antal radversioner i versionskedjorna som går igenom. |
| elapsed_time_seconds | bigint | Förfluten tid sedan transaktionen fick sitt transaktionssekvensnummer. |
| pdw_node_id | int |
gäller för: Azure Synapse Analytics, Analytics Platform System (PDW) Identifieraren för noden som den här fördelningen är på. |
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
sys.dm_tran_active_snapshot_database_transactions rapporterar transaktioner som tilldelas ett transaktionssekvensnummer (XSN). XSN tilldelas när transaktionen först går in i versionslagret. I en databas som är aktiverad för snapshot-isolering eller läs-committerad isolering med radversionering visas exemplen när ett XSN tilldelas en transaktion:
Om en transaktion körs på serialiserbar isoleringsnivå tilldelas ett XSN när transaktionen först utför ett sätt, såsom en UPDATE-operation, som orsakar att en radversion skapas.
Om en transaktion körs under snapshot-isolering tilldelas ett XSN när någon data manipulation language (DML)-sats, inklusive en SELECT-operation, körs.
Transaktionssekvensnummer ökar successivt för varje transaktion som startas i en instans av databasmotorn.
Examples
Följande exempel använder ett testscenario där fyra samtidiga transaktioner, var och en identifierad med ett transaktionssekvensnummer (XSN), körs i en databas där ALLOW_SNAPSHOT_ISOLATION och READ_COMMITTED_SNAPSHOT alternativen är inställda på ON. Följande transaktioner körs:
XSN-57 är en uppdateringsoperation under serialiserbar isolering.
XSN-58 är samma som XSN-57.
XSN-59 är en select-operation under snapshot isolation
XSN-60 är samma som XSN-59.
Följande fråga exekveras.
SELECT
transaction_id,
transaction_sequence_num,
commit_sequence_num,
is_snapshot session_id,
first_snapshot_sequence_num,
max_version_chain_traversed,
average_version_chain_traversed,
elapsed_time_seconds
FROM sys.dm_tran_active_snapshot_database_transactions;
Här är resultatet.
transaction_id transaction_sequence_num commit_sequence_num
-------------- ------------------------ -------------------
9295 57 NULL
9324 58 NULL
9387 59 NULL
9400 60 NULL
is_snapshot session_id first_snapshot_sequence_num
----------- ----------- ---------------------------
0 54 0
0 53 0
1 52 57
1 51 57
max_version_chain_traversed average_version_chain_traversed
--------------------------- -------------------------------
0 0
0 0
1 1
1 1
elapsed_time_seconds
--------------------
419
397
359
333
Följande information utvärderar resultaten från sys.dm_tran_active_snapshot_database_transactions:
XSN-57: Eftersom denna transaktion inte körs under snapshot-isolering
is_snapshotär0värdet ochfirst_snapshot_sequence_num.transaction_sequence_numvisar att ett transaktionssekvensnummer har tilldelats denna transaktion, eftersom ett eller båda ALLOW_SNAPSHOT_ISOLATION eller READ_COMMITTED_SNAPSHOT databasalternativ är PÅ.XSN-58: Denna transaktion körs inte under snapshot-isolering och samma information gäller för XSN-57.
XSN-59: Detta är den första aktiva transaktionen som körs under snapshot-isolering. Denna transaktion läser data som är committerad före XSN-57, enligt .
first_snapshot_sequence_numUtdata för denna transaktion visar också att den maximala versionskedjan som genomgår för en rad är1och har gått igenom ett genomsnitt av1version för varje rad som åtkoms. Detta innebär att transaktionerna XSN-57, XSN-58 och XSN-60 inte har modifierat rader och committat.XSN-60: Detta är den andra transaktionen som körs under snapshot-isolering. Utgången visar samma information som XSN-59.
Se även
ANGE TRANSAKTIONSISOLERINGSNIVÅ (Transact-SQL)
Dynamiska hanteringsvyer och funktioner (Transact-SQL)
transaktionsrelaterade dynamiska hanteringsvyer och funktioner (Transact-SQL)