Compartilhar via


sys.dm_tran_current_transaction (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

Retorna uma única linha que exibe informações do estado da transação na sessão atual.

Observação

Para chamar isso do Azure Synapse Analytics ou do PDW (Analytics Platform System), use o nome sys.dm_pdw_nodes_tran_current_transaction. Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.

Sintaxe

  
sys.dm_tran_current_transaction  

Tabela retornada

Nome da coluna Tipo de dados Descrição
transaction_id bigint ID de transação do instantâneo atual.
transaction_sequence_num bigint Número de sequência da transação que gera a versão de registro.
transaction_is_snapshot bit Estado de isolamento de instantâneo. Este valor será 1 se a transação for iniciada no isolamento de instantâneo. Caso contrário, o valor será 0.
first_snapshot_sequence_num bigint Número de sequência de transação mais baixo das transações que estavam ativas quando o instantâneo foi feito. Em execução, uma transação de instantâneo faz um instantâneo de todas as transações ativas naquele momento. No caso de transações não instantâneo, esta coluna mostra 0.
last_transaction_sequence_num bigint Número de sequência global. Este valor representa o último número de sequência de transação que foi gerado pelo sistema.
first_useful_sequence_num bigint Número de sequência global. Este valor representa o número de sequência de transação mais antigo da transação que tem versões de linha que devem ser retidas no armazenamento de versões. As versões de linha que foram criadas por transações anteriores podem ser removidas.
pdw_node_id int Aplica-se a: Azure Synapse Analytics, Analytics Platform System (PDW)

O identificador do nó em que essa distribuição está ativada.

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.

Exemplos

O exemplo a seguir usa um cenário de teste no qual quatro transações simultâneas, cada uma identificada por um XSN (número de sequência de transação), estão sendo executadas em um banco de dados no qual as opções ALLOW_SNAPSHOT_ISOLATION e READ_COMMITTED_SNAPSHOT estão definidas como ON. As seguintes transações estão sendo executadas:

  • XSN-57 é uma operação de atualização sob o isolamento serializável.

  • XSN-58 é o mesmo que XSN-57.

  • XSN-59 é uma operação de seleção em isolamento de instantâneo.

  • XSN-60 é o mesmo que XSN-59.

A consulta a seguir é executada no escopo de cada transação.

SELECT   
    transaction_id  
   ,transaction_sequence_num  
   ,transaction_is_snapshot  
   ,first_snapshot_sequence_num  
   ,last_transaction_sequence_num  
   ,first_useful_sequence_num  
  FROM sys.dm_tran_current_transaction;  

Aqui está o resultado de XSN-59.

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9387                 59                       1                         
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
57                               61                        
  
first_useful_sequence_num  
-------------------------  
57  

A saída mostra que XSN-59 é uma transação de instantâneo que usa XSN-57 como a primeira transação que estava ativa quando XSN-59 foi iniciado. Isso significa que XSN-59 lê dados confirmados por transações com um número de sequência de transação inferior a XSN-57.

Aqui está o resultado de XSN-57.

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9295                 57                       0  
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
NULL                        61  
  
first_useful_sequence_num  
-------------------------  
57  

Como XSN-57 não é uma transação de instantâneo, first_snapshot_sequence_num é NULL.

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)