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)