Condividi tramite


sys.dm_tran_active_transactions (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di analisi (PDW)Endpoint di analisi SQL in Microsoft FabricMagazzino in Microsoft FabricDatabase SQL in Microsoft Fabric

La sys.dm_tran_active_transactions vista di gestione dinamica restituisce informazioni sulle transazioni per l'istanza.

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. Il coordinatore delle transazioni distribuite Microsoft (MS DTC) utilizza l'identificatore UOW per lavorare con la transazione distribuita.
transaction_state int 0 = La transazione non è stata ancora inizializzata completamente.

1 = La transazione è stata inizializzata ma non è iniziata.

2 = La transazione è attiva.

3 = La transazione è terminata. Utilizzato per transazioni di sola lettura.

4 = Il processo di commit è stato inizializzato nella transazione distribuita. Solo per 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.

1 = ATTIVO

2 = PREPARATO

3 = IMPEGNATO

4 = ABORTITO

5 = RECUPERATI
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.

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 Microsoft Fabric, è necessaria l'appartenenza al ruolo diworkspace Contributor o a un ruolo più privilegiato per interrogare sys.dm_tran_active_transactions.

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.

Osservazioni:

Per chiamare questa vista di gestione dinamica da Azure Synapse Analytics o Analytics Platform System (PDW), usa il nome sys.dm_pdw_nodes_tran_active_transactions Questa sintassi non è supportata dal server less SQL pool in Azure Synapse Analytics.

Esempi

R. Usa sys.dm_tran_active_transactions con altri DMV per trovare informazioni sulle transazioni attive

Il seguente esempio mostra tutte le transazioni attive sul sistema. La query fornisce informazioni dettagliate sulla transazione, la sessione utente, l'applicazione inviata, 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;