sys.dm_tran_current_transaction (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 una riga singola che visualizza informazioni sullo stato della transazione nella sessione corrente.

Nota

Per chiamare questa operazione da Azure Synapse Analytics o da Platform System (PDW), usare il nome sys.dm_pdw_nodes_tran_current_transaction. Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.

Sintassi

  
sys.dm_tran_current_transaction  

Tabella restituita

Nome colonna Tipo di dati Descrizione
transaction_id bigint ID transazione dello snapshot corrente.
transaction_sequence_num bigint Numero di sequenza della transazione che genera la versione del record.
transaction_is_snapshot bit Stato di isolamento dello snapshot. Questo valore è 1 se la transazione viene avviata con isolamento dello snapshot. In caso contrario, il valore è 0.
first_snapshot_sequence_num bigint Numero di sequenza più basso delle transazioni attive nel momento in cui è stato eseguito uno snapshot. Al momento dell'esecuzione, una transazione snapshot esegue uno snapshot di tutte le transazioni attive in quel momento. Per le transazioni non snapshot, il valore di questa colonna è 0.
last_transaction_sequence_num bigint Numero di sequenza globale. Questo valore rappresenta l'ultimo numero di sequenza della transazione generato dal sistema.
first_useful_sequence_num bigint Numero di sequenza globale. Questo valore rappresenta il numero di sequenza della transazione meno recente con versioni di riga che devono essere mantenute nell'archivio delle versioni. Le versioni di riga create da transazioni precedenti possono essere rimosse.
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

Nell'esempio seguente viene utilizzato uno scenario di test in cui quattro transazioni simultanee, ognuna identificata da un numero di sequenza della transazione (XSN), vengono eseguite in un database con le opzioni ALLOW_SNAPSHOT_ISOLATION e READ_COMMITTED_SNAPSHOT impostate su ON. Vengono eseguite le transazioni seguenti:

  • XSN-57 è un'operazione di aggiornamento con isolamento serializzabile.

  • XSN-58 è uguale a XSN-57.

  • XSN-59 è un'operazione di selezione con isolamento dello snapshot.

  • XSN-60 è uguale a XSN-59.

Nell'ambito di ogni transazione viene eseguita la query seguente.

SELECT   
    transaction_id  
   ,transaction_sequence_num  
   ,transaction_is_snapshot  
   ,first_snapshot_sequence_num  
   ,last_transaction_sequence_num  
   ,first_useful_sequence_num  
  FROM sys.dm_tran_current_transaction;  

Set di risultati per XSN-59:

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9387                 59                       1                         
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
57                               61                        
  
first_useful_sequence_num  
-------------------------  
57  

L'output indica che XSN-59 è una transazione snapshot che utilizza XSN-57 come prima transazione attiva all'avvio di XSN-59. XSN-59 leggerà pertanto i dati con commit eseguito da transazioni dotate di numero di sequenza della transazione inferiore a XSN-57.

Set di risultati per XSN-57:

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9295                 57                       0  
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
NULL                        61  
  
first_useful_sequence_num  
-------------------------  
57  

Poiché XSN-57 non è una transazione snapshot, first_snapshot_sequence_num è NULL.

Vedi anche

Funzioni a gestione dinamica e DMV (Transact-SQL)
Funzioni e viste DMV relative alle transazioni (Transact-SQL)