sys.dm_tran_transactions_snapshot (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Retorna uma tabela virtual para a sequence_number de transações que estão ativas quando cada transação de instantâneo é iniciada. A informações retornadas por esta exibição podem lhe ser úteis para fazer o seguinte:
Encontrar o número de transações de instantâneo ativas no momento.
Identificar modificações de dados ignoradas por uma transação de instantâneo particular. As modificações de dados de uma transação que está ativa quando um instantâneo de transação se inicia serão ignoradas por ele, mesmo depois de a transação ser confirmada.
Por exemplo, considere a seguinte saída do 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
A coluna transaction_sequence_num
identifica o número de sequência de transação (XSN) das transações de instantâneo atuais. A saída mostra dois: 59
e 60
. A coluna snapshot_sequence_num
identifica o número de sequência de transação das transações ativas quando cada transação de instantâneo se inicia.
A saída mostra que transação de instantâneo XSN-59 se inicia enquanto duas transações ativas, XSN-57 e XSN-58, estiverem em execução. Se XSN-57 ou XSN-58 fizerem modificações de dados, XSN-59 ignorará as mudanças e usará o controle de versão de linha para manter uma exibição transacionalmente consistente do banco de dados.
A transação de instantâneo XSN-60 ignora modificações de dados feitas pelo XSN-57 e XSN-58 e, igualmente, pelo XSN 59.
Tabela retornada
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
transaction_sequence_num | bigint | Número de sequência de transação (XSN) de um instantâneo de transação. |
snapshot_id | int | ID do instantâneo para cada instrução Transact-SQL iniciada em leitura confirmada usando controle de versão de linha. Este valor é usado para gerar uma exibição consistente transacional do banco de dados que oferece suporte para cada consulta sendo executada com leitura confirmada, usando controle de versão de linha. |
snapshot_sequence_num | bigint | Número de sequência de transação de uma transação que estava ativa quando o instantâneo de transação começou. |
Permissões
No SQL Server e na Instância Gerenciada de SQL, requer a permissão VIEW SERVER STATE
.
Nos objetivos de serviço do Banco de Dados SQL Básico, S0 e S1 e para bancos de dados em pools elásticos, é necessário ter a conta do administrador do servidor, a conta do administrador do Microsoft Entra ou a associação à ##MS_ServerStateReader##
função de servidor. Em todos os outros objetivos de serviço do Banco de Dados SQL, a permissão VIEW DATABASE STATE
no banco de dados ou a associação à função de servidor ##MS_ServerStateReader##
são necessárias.
Permissões do SQL Server 2022 e posteriores
É necessária a permissão VIEW SERVER PERFORMANCE STATE no servidor.
Comentários
Quando uma transação de instantâneo é iniciada, o Mecanismo de Banco de Dados registra todas as transações que estão ativas naquele momento. sys.dm_tran_transactions_snapshot relata essas informações para todas as transações de instantâneo ativas no momento.
Cada transação é identificada por um número de sequência de transação atribuído quando no início da transação. As transações começam quando uma instrução BEGIN TRANSACTION ou BEGIN WORK é executada. No entanto, o Mecanismo de Banco de Dados atribui o número de seqüência da transação com a execução da primeira instrução Transact-SQL que acessa os dados após a instrução BEGIN TRANSACTION ou BEGIN WORK. Os números de sequência de transação são incrementados de um.
Confira também
Exibições e funções de gerenciamento dinâmico (Transact-SQL)
Funções e exibições de gerenciamento dinâmico relacionadas à transação (Transact-SQL)