Condividi tramite


sys.dm_tran_transactions_snapshot (Transact-SQL)

Restituisce una tabella virtuale per il sequence_number delle 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 generato da 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.

Sintassi

dm_tran_transactions_snapshot

Tabella restituita

Nome colonna

Tipo di dati

Descrizione

transaction_sequence_num

bigint

Numero di sequenza di una transazione snapshot.

snapshot_id

int

ID dello snapshot per ogni istruzione Transact-SQL avviata in Read committed con 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

È richiesta l'autorizzazione VIEW SERVER STATE nel server.

Osservazioni

Quando una transazione snapshot viene avviata, il Motore di database registra tutte le transazioni attive in quel momento. sys.dm_tran_transactions_snapshot restituisce queste informazioni per tutte le transazioni snapshot 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 della 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à.

Vedere anche

Riferimento

Funzioni e viste a gestione dinamica (Transact-SQL)

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