sys.dm_tran_current_snapshot (Transact-SQL)
Retorna uma tabela virtual que exibe todas as transações ativas no momento em que a transação de instantâneo atual tem início. Se a transação atual não for uma transação de instantâneo, essa função não retornará nenhuma linha. sys.dm_tran_current_snapshot é semelhante a sys.dm_tran_transactions_snapshot, exceto que sys.dm_tran_current_snapshot retorna apenas as transações ativas para a transação de instantâneo atual.
Sintaxe
sys.dm_tran_current_snapshot
Tabela retornada
Nome da coluna |
Tipo de dados |
Descrição |
---|---|---|
transaction_sequence_num |
bigint |
Número de seqüência de transação da transação ativa. |
Permissões
Requer a permissão VIEW SERVER 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 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 em 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 seguinte é executada dentro do escopo de XSN-59.
SELECT
transaction_sequence_num
FROM sys.dm_tran_current_snapshot;
Aqui está o conjunto de resultados.
transaction_sequence_num
------------------------
57
58
Os resultados mostram que XSN-57 e XSN-58 estavam ativos no momento em que a transação de instantâneo XSN-59 teve início. Esse mesmo resultado persiste, mesmo depois que XSN-57 e XSN-58 são confirmados ou revertidos, até que a transação de instantâneo termine.
A mesma consulta é executada dentro do escopo de XSN-60.
Aqui está o conjunto de resultados.
transaction_sequence_num
------------------------
57
58
59
A saída para XSN-60 inclui as mesmas transações que aparecem para XSN-59, mas também inclui XSN-59, que estava ativo quando XSN-60 iniciou.