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 Analytics Platform System (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.

In database SQL obiettivi di servizio Basic, S0 e S1 e per i database nei pool elastici, è necessario l'account amministratore del server, l'account amministratore di Microsoft Entra o l'appartenenza al ruolo del ##MS_ServerStateReader## 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)