Freigeben über


sys.dm_tran_active_transactions (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Analyseendpunkt in Microsoft FabricLagerhaus in Microsoft FabricSQL-Datenbank in Microsoft Fabric

Die sys.dm_tran_active_transactions dynamische Management-Ansicht liefert Informationen zu Transaktionen für die Instanz.

Spaltenname Datentyp Beschreibung
transaction_id bigint ID der Transaktion auf Instanzebene, nicht auf Datenbankebene. Die ID ist nur für alle Datenbanken in einer Instanz eindeutig, jedoch nicht für alle Serverinstanzen.
name nvarchar(32) Transaktionsname. Bei Markierung der Transaktion wird der Transaktionsname überschrieben und durch den markierten Namen ersetzt.
transaction_begin_time datetime Uhrzeit des Transaktionsbeginns.
transaction_type int Transaktionstyp.

1 = Lese-/Schreibtransaktion

2 = Schreibgeschützte Transaktion

3 = Systemtransaktion

4 = Verteilte Transaktion
transaction_uow uniqueidentifier Arbeitseinheits-Bezeichner (Unit of Work, UOW) für verteilte Transaktionen. Der Microsoft Distributed Transaction Coordinator (MS DTC) verwendet die UOW-Kennung, um mit der verteilten Transaktion zu arbeiten.
transaction_state int 0 = Die Transaktion wurde noch nicht vollständig initialisiert.

1 = Die Transaktion wurde initialisiert, aber nicht gestartet.

2 = Die Transaktion ist aktiv.

3 = Die Transaktion wurde beendet. Für Schreibschutz-Transaktionen verwendet.

4 = Der Commitprozess wurde für die verteilte Transaktion initiiert. Nur für verteilte Transaktionen. Die verteilte Transaktion ist noch aktiv, doch ist keine weitere Verarbeitung möglich.

5 = Die Transaktion hat den Status 'Vorbereitet' und wartet auf Auflösung.

6 = Die Transaktion wurde zugesichert.

7 = Es wird ein Rollback für die Transaktion durchgeführt.

8 = Die Transaktion wurde zurückgesetzt.
transaction_status int Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.
transaction_status2 int Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.
dtc_state int Gilt für: Azure SQL-Datenbank.

1 = AKTIV

2 = VORBEREITET

3 = VERPFLICHTET

4 = ABGEBRACHT

5 = WIEDERHERGESTELLT
dtc_status int Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.
dtc_isolation_level int Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.
filestream_transaction_id varbinary(128) Gilt für: Azure SQL-Datenbank.

Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.
pdw_node_id int Gilt für: Azure Synapse Analytics, Analytics Platform System (PDW)

Der Bezeichner für den Knoten, auf dem sich diese Verteilung befindet.

Berechtigungen

Für SQL Server und SQL Managed Instance ist die VIEW SERVER STATE-Berechtigung erforderlich.

In Microsoft Fabric ist eine Mitgliedschaft in der Rolle Contributorworkspace oder einer höher privilegierten Rolle erforderlich, um abzufragen sys.dm_tran_active_transactions.

Für die SQL-Datenbank-Ziele Basic, S0 und S1 sowie für Datenbanken in Pools für elastische Datenbanken ist das Konto des Serveradministrators oder des Microsoft Entra-Administratorkontos oder die Mitgliedschaft in der ##MS_ServerStateReader##Serverrolle erforderlich. Für alle anderen SQL-Datenbank-Dienstziele ist entweder die VIEW DATABASE STATE-Berechtigung für die Datenbank oder die Mitgliedschaft in der ##MS_ServerStateReader##-Serverrolle erforderlich.

Berechtigungen für SQL Server 2022 und höher

Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.

Bemerkungen

Um diese dynamische Verwaltungsansicht aus Azure Synapse Analytics oder Analytics Platform System (PDW) aufzurufen, verwenden Sie den Namen sys.dm_pdw_nodes_tran_active_transactions Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.

Beispiele

A. Nutzen Sie sys.dm_tran_active_transactions mit anderen DMVs, um Informationen über aktive Transaktionen zu finden

Das folgende Beispiel zeigt alle aktiven Transaktionen im System. Die Abfrage liefert detaillierte Informationen über die Transaktion, die Benutzersitzung, die eingereichte Anwendung sowie die Anfrage, die sie gestartet hat, und viele weitere.

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;