Condividi tramite


sys.dm_tran_transactions_snapshot (Transact-SQL)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure

Restituisce una tabella virtuale per il sequence_number di transazioni attive all'avvio di ogni transazione snapshot. Le informazioni restituite da questa vista semplificano l'esecuzione delle operazioni seguenti:

  • Individuare il numero di transazioni snapshot attive.

  • Identificare le modifiche dei dati ignorate da una determinata transazione snapshot. Se all'avvio di una transazione snapshot una transazione risulta attiva, tutte le modifiche dei relativi dati vengono ignorate dalla transazione snapshot, anche dopo il commit della transazione.

Si consideri ad esempio l'output seguente di sys.dm_tran_transactions_snapshot:

transaction_sequence_num snapshot_id snapshot_sequence_num  
------------------------ ----------- ---------------------  
59                       0           57  
59                       0           58  
60                       0           57  
60                       0           58  
60                       0           59  
60                       3           57  
60                       3           58  
60                       3           59  
60                       3           60  

La colonna transaction_sequence_num identifica il numero di sequenza (XSN) delle transazioni snapshot correnti. L'output ne visualizza due: 59 e 60. La colonna snapshot_sequence_num identifica il numero di sequenza delle transazioni che risultano attive all'avvio delle singole transazioni snapshot.

L'output indica che la transazione snapshot XSN-59 viene avviata durante l'esecuzione di due transazioni attive, XSN-57 e XSN-58. Se in XSN-57 o XSN-58 si apportano modifiche ai dati, XSN-59 le ignora e utilizza il controllo delle versioni delle righe per mantenere una vista consistente dal punto di vista transazionale del database.

La transazione snapshot XSN-60 ignora le modifiche dei dati eseguite non solo da XSN-57 e XSN-58, ma anche da XSN 59.

Tabella restituita

Nome colonna Tipo di dati Descrizione
transaction_sequence_num bigint Numero di sequenza di una transazione snapshot.
snapshot_id int ID snapshot per ogni istruzione Transact-SQL avviata in read-committed usando il controllo delle versioni delle righe. Questo valore viene utilizzato per generare una vista consistente dal punto di vista transazionale del database che supporta ogni query eseguita in Read committed utilizzando il controllo delle versioni delle righe.
snapshot_sequence_num bigint Numero di sequenza di una transazione attiva all'avvio della transazione snapshot.

Autorizzazioni

In SQL Server e Istanza gestita di SQL è richiesta VIEW SERVER STATE l'autorizzazione.

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'appartenenza al ruolo del ##MS_ServerStateReader## server.

Autorizzazioni per SQL Server 2022 e versioni successive

È richiesta l'autorizzazione VIEW edizione Standard RVER PERFORMANCE STATE nel server.

Osservazioni:

All'avvio di una transazione snapshot, il motore di database registra tutte le transazioni attive in quel momento. sys.dm_tran_transactions_snapshot segnala queste informazioni per tutte le transazioni snapshot attualmente attive.

Ogni transazione viene identificata da un numero di sequenza della transazione assegnato all'inizio della transazione. Le transazioni hanno inizio quando viene eseguita un'istruzione BEGIN TRANSACTION o BEGIN WORK. Tuttavia, il motore di database assegna il numero di sequenza di transazione con l'esecuzione della prima istruzione Transact-SQL che accede ai dati dopo l'istruzione BEGIN TRANSACTION o BEGIN WORK. I numeri di sequenza delle transazioni vengono aumentati di un'unità.

Vedi anche

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