sys.dm_tran_active_transactions (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Gibt Informationen zu Transaktionen für die Instanz von SQL Server zurück.

Hinweis

Um dies von 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.

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. MS DTC verwendet den UOW-Bezeichner zum Bearbeiten der verteilten Transaktion.
transaction_state int 0 = Die Transaktion wurde noch nicht vollständig initialisiert.

1 = Die Transaktion wurde initialisiert, aber noch nicht gestartet.

2 = Die Transaktion ist aktiv.

3 = Die Transaktion wurde beendet. Diese Einstellung wird für schreibgeschützte Transaktionen verwendet.

4 = Der Commitprozess wurde für die verteilte Transaktion initiiert. Diese Einstellung wird nur für verteilte Transaktionen verwendet. 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 (Ursprüngliche Version über aktuelle Version).

1 = ACTIVE

2 = PREPARED

3 = COMMITTED

4 = ABORTED

5 = RECOVERED
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 (Ursprüngliche Version über aktuelle Version).

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.

Für SQL-Datenbank Standard-, S0- und S1-Dienstziele sowie für Datenbanken in elastischen Pools ist das Serveradministratorkonto, das Microsoft Entra-Administratorkonto 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.

Beispiele

.A Verwenden von sys.dm_tran_active_transactions mit anderen DMVs zum Suchen von Informationen zu aktiven Transaktionen

Das folgende Beispiel zeigt alle aktiven Transaktionen im System und enthält detaillierte Informationen über die Transaktion, die Benutzersitzung, die gesendete Anwendung und die Abfrage, die sie gestartet hat, und viele andere.

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;

Siehe auch

sys.dm_tran_session_transactions (Transact-SQL)
sys.dm_tran_database_transactions (Transact-SQL)
Dynamische Verwaltungssichten und Funktionen (Transact-SQL)
Dynamische Verwaltungssichten und -funktionen im Zusammenhang mit Transaktionen (Transact-SQL)