Partilhar via


sys.dm_tran_current_transaction (Transact-SQL)

Aplica-se a:Banco de Dados SQL doAzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Banco de Dados SQL no Microsoft Fabric

Devolve uma única linha que mostra a informação de estado da transação na sessão atual.

Observação

Para chamar isto de Azure Synapse Analytics ou Analytics Platform System (PDW), use o nome sys.dm_pdw_nodes_tran_current_transaction. Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.

Sintaxe

  
sys.dm_tran_current_transaction  

Tabela retornada

Nome da coluna Tipo de dados Description
transaction_id bigint ID da transação do snapshot atual.
transaction_sequence_num bigint Número de sequência da transação que gera a versão do registo.
transaction_is_snapshot bit Estado de isolamento de instantâneos. Este valor é 1 se a transação for iniciada sob isolamento de instantâneos. Caso contrário, o valor é 0.
first_snapshot_sequence_num bigint Número de sequência de transação mais baixo das transações que estavam ativas quando foi tirada uma captura. Na execução, uma transação snapshot tira um snapshot de todas as transações ativas nesse momento. Para transações não snapshot, 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 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 mantidas na loja de versões. As versões da linha 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 esta distribuição se encontra.

Permissions

No SQL Server e na Instância Gerenciada do SQL, requer VIEW SERVER STATE permissão.

No Banco de Dados SQL Basic, S0e S1 objetivos de serviço e para bancos de dados em pools elásticos , a conta de de administrador do servidor, a conta de de administrador do Microsoft Entra ou a associação aode função de servidor ##MS_ServerStateReader## é necessária. Em todos os outros objetivos de serviço do Banco de dados SQL, é necessária a permissão VIEW DATABASE STATE no banco de dados ou a associação à função de servidor ##MS_ServerStateReader##.

Permissões para SQL Server 2022 e posterior

Requer a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Examples

O exemplo seguinte utiliza um cenário de teste em que quatro transações concorrentes, cada uma identificada por um número de sequência de transação (XSN), estão a correr numa base de dados que tem as opções ALLOW_SNAPSHOT_ISOLATION e READ_COMMITTED_SNAPSHOT definidas para ON. As seguintes transações estão a decorrer:

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

  • O XSN-58 é igual ao XSN-57.

  • O XSN-59 é uma operação de seleção sob isolamento de instantâneos.

  • O XSN-60 é igual ao XSN-59.

A seguinte consulta é executada dentro do âmbito 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 do 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 o XSN-59 é uma transação instantânea que utiliza o XSN-57 como a primeira transação ativa quando o XSN-59 começou. Isto significa que o XSN-59 lê dados comprometidos por transações que tenham um número de sequência de transação inferior ao XSN-57.

Aqui está o resultado do 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 snapshot, first_snapshot_sequence_num é NULL.

Ver também

Visões e funções de gerenciamento dinâmico (Transact-SQL)
Visualizações e funções de gerenciamento dinâmico relacionadas à transação (Transact-SQL)