sys.dm_tran_active_transactions (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)
Restituisce informazioni sulle transazioni per l'istanza di SQL Server.
Nota
Per chiamare questa operazione da Azure Synapse Analytics o da Platform System (PDW), usare il nome sys.dm_pdw_nodes_tran_active_transactions. Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
transaction_id | bigint | ID della transazione a livello di istanza, non a livello di database. È univoco solo in tutti i database all'interno di un'istanza, ma non tra tutte le istanze del server. |
name | nvarchar(32) | Nome della transazione. Viene sovrascritto se la transazione è contrassegnata e il nome contrassegnato sostituisce il nome della transazione. |
transaction_begin_time | datetime | Ora di avvio della transazione. |
transaction_type | int | Tipo di transazione. 1 = Transazione di lettura/scrittura 2 = Transazione di sola lettura 3 = Transazione di sistema 4 = Transazione distribuita |
transaction_uow | uniqueidentifier | Identificatore dell'unità di lavoro della transazione per le transazioni distribuite. MS DTC utilizza l'identificatore dell'unità di lavoro per gestire la transazione distribuita. |
transaction_state | int | 0 = La transazione non è stata ancora inizializzata completamente. 1 = La transazione è stata inizializzata ma non è stata avviata. 2 = La transazione è attiva. 3 = La transazione è terminata. Viene utilizzato per le transazioni di sola lettura. 4 = Il processo di commit è stato inizializzato nella transazione distribuita. Riservato solo alle transazioni distribuite. La transazione distribuita è ancora attiva, ma non può essere ulteriormente elaborata. 5 = La transazione è in uno stato preparato ed è in attesa di risoluzione. 6 = È stato eseguito il commit della transazione. 7 = L'esecuzione del rollback della transazione è in corso. 8 = È stato eseguito il rollback della transazione. |
transaction_status | int | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
transaction_status2 | int | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
dtc_state | int | Si applica a: database SQL di Azure (versione iniziale tramite la versione corrente). 1 = ACTIVE 2 = PREPARED 3 = COMMITTED 4 = ABORTED 5 = RECOVERED |
dtc_status | int | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
dtc_isolation_level | int | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
filestream_transaction_id | varbinary(128) | Si applica a: database SQL di Azure (versione iniziale tramite la versione corrente). Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
pdw_node_id | int | Si applica a: Azure Synapse Analytics, Piattaforma di analisi (PDW) Identificatore del nodo in cui è attiva la distribuzione. |
Autorizzazioni
In SQL Server e Istanza gestita di SQL è richiesta l'autorizzazione VIEW SERVER STATE
.
Negli obiettivi del servizio Basic del Database SQL, S0 e S1 e per i database nei pool elastici, è richiesto l'account amministratore del server, l'account amministratore di Microsoft Entra o l’adesione nel ##MS_ServerStateReader##
al ruolo del server. Per tutti gli altri obiettivi di servizio database SQL, è necessaria l'autorizzazione VIEW DATABASE STATE
per il database o l'adesione ruolo del server ##MS_ServerStateReader##
.
Autorizzazioni per SQL Server 2022 e versioni successive
È richiesta l'autorizzazione VIEW SERVER PERFORMANCE STATE per il server.
Esempi
R. Uso di sys.dm_tran_active_transactions con altri DMV per trovare informazioni sulle transazioni attive
L'esempio seguente mostra tutte le transazioni attive nel sistema e fornisce informazioni dettagliate sulla transazione, la sessione utente, l'applicazione inviata e la query che l'ha avviata e molte altre.
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;
Vedi anche
sys.dm_tran_session_transactions (Transact-SQL)
sys.dm_tran_database_transactions (Transact-SQL)
Funzioni a gestione dinamica e DMV (Transact-SQL)
Funzioni e viste DMV relative alle transazioni (Transact-SQL)