sys.dm_tran_active_transactions (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics 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 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.
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)