sys.dm_tran_transactions_snapshot (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Retorna uma tabela virtual para o 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 de 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 de instantâneo para cada instrução Transact-SQL iniciada em confirmação de leitura 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 SQL Database Basic, S0 e S1 e para bancos de dados em pools elásticos, a conta de administrador do servidor, a conta de administrador do Microsoft Entra ou a associação à ##MS_ServerStateReader##função de servidor é necessária. 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 snapshot 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 sequência da transação com a execução da primeira instrução Transact-SQL que acessa 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)