sys.dm_tran_current_transaction (Transact-SQL)
Retorna uma única linha que exibe informações do estado da transação na sessão atual.
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 seqüê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 seqüê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 seqüência global. Este valor representa o último número de seqüência de transação que foi gerado pelo sistema. |
first_useful_sequence_num |
bigint |
Número de seqüência global. Este valor representa o número de seqüê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. |
Permissões
Requer a permissão VIEW SERVER STAT 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 seqüê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 isolamento serializável.
XSN-58 é o mesmo que XSN-57.
XSN-59 é uma operação de seleção sob 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 seqüê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.