Delen via


sys.dm_tran_active_transactions (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

De sys.dm_tran_active_transactions dynamische beheerweergave geeft informatie over transacties voor de instantie terug.

Kolomnaam Gegevenssoort Description
transaction_id bigint ID van de transactie op instantieniveau, niet op databaseniveau. Het is alleen uniek over alle databases binnen een instantie, maar niet uniek over alle serverinstanties.
name nvarchar(32) Naam van de transactie. Dit wordt overschreven als de transactie gemarkeerd is en de gemarkeerde naam de transactienaam vervangt.
transaction_begin_time datetime Tijd dat de transactie begon.
transaction_type int Type transactie.

1 = Lees/schrijf-transactie

2 = Alleen-lezen transactie

3 = Systeemtransactie

4 = Gedistribueerde transactie
transaction_uow uniqueidentifier Transaction unit of work (UOW) identificatie voor gedistribueerde transacties. De Microsoft distributed transaction coordinator (MS DTC) gebruikt de UOW-identificatie om met de gedistribueerde transactie te werken.
transaction_state int 0 = De transactie is nog niet volledig geïnitialiseerd.

1 = De transactie is geïnitialiseerd maar niet gestart.

2 = De transactie is actief.

3 = De transactie is beëindigd. Gebruikt voor alleen-lezen transacties.

4 = Het commitproces is gestart op de gedistribueerde transactie. Alleen voor gedistribueerde transacties. De gedistribueerde transactie is nog steeds actief, maar verdere verwerking kan niet plaatsvinden.

5 = De transactie bevindt zich in een voorbereide toestand en wacht op een oplossing.

6 = De transactie is gecommitteerd.

7 = De transactie wordt teruggerold.

8 = De transactie is teruggedraaid.
transaction_status int Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.
transaction_status2 int Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.
dtc_state int is van toepassing op: Azure SQL Database.

1 = ACTIEF

2 = VOORBEREID

3 = TOEGEWIJD

4 = AFGEBROKEN

5 = HERSTELD
dtc_status int Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.
dtc_isolation_level int Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.
filestream_transaction_id varbinary(128) is van toepassing op: Azure SQL Database.

Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.
pdw_node_id int Van toepassing op: Azure Synapse Analytics, Analytics Platform System (PDW)

De id voor het knooppunt waarop deze distributie zich bevindt.

Permissions

Voor SQL Server en SQL Managed Instance is een machtiging vereist VIEW SERVER STATE .

In Microsoft Fabric is lidmaatschap van de Contributor-workspacerol of de meer privilegede rol vereist om te kunnen queryënsys.dm_tran_active_transactions.

Voor servicedoelstellingen van SQL Database Basic, S0 en S1 en voor databases in elastische pools is het serverbeheerdersaccount , het Microsoft Entra-beheerdersaccount of het lidmaatschap van de ##MS_ServerStateReader##serverrol vereist. Voor alle andere SQL Database-servicedoelstellingen is de VIEW DATABASE STATE machtiging voor de database of het lidmaatschap van de ##MS_ServerStateReader## serverfunctie vereist.

Machtigingen voor SQL Server 2022 en hoger

Vereist de machtiging PRESTATIESTATUS VAN DE WEERGAVESERVER op de server.

Opmerkingen

Om deze dynamische beheerweergave van Azure Synapse Analytics of Analytics Platform System (PDW) aan te roepen, gebruik je de naam sys.dm_pdw_nodes_tran_active_transactions Deze syntax wordt niet ondersteund door serverless SQL pool in Azure Synapse Analytics.

Voorbeelden

Eén. Gebruik sys.dm_tran_active_transactions met andere DMV's om informatie te vinden over actieve transacties

Het volgende voorbeeld toont alle actieve transacties op het systeem. De query geeft gedetailleerde informatie over de transactie, de gebruikerssessie, de applicatie die is ingediend, de query die deze heeft gestart, en vele anderen.

SELECT
  GETDATE() as now,
  DATEDIFF(SECOND, transaction_begin_time, GETDATE()) as tran_elapsed_time_seconds,
  st.session_id,
  txt.text, 
  *
FROM
  sys.dm_tran_active_transactions at
  INNER JOIN sys.dm_tran_session_transactions st ON st.transaction_id = at.transaction_id
  LEFT OUTER JOIN sys.dm_exec_sessions sess ON st.session_id = sess.session_id
  LEFT OUTER JOIN sys.dm_exec_connections conn ON conn.session_id = sess.session_id
    OUTER APPLY sys.dm_exec_sql_text(conn.most_recent_sql_handle)  AS txt
ORDER BY
  tran_elapsed_time_seconds DESC;