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 l'autorizzazione VIEW SERVER STATE
.
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:
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 a gestione dinamica e DMV (Transact-SQL)
Funzioni e viste DMV relative alle transazioni (Transact-SQL)