Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:Banco de Dados SQL do
Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Banco de Dados SQL no Microsoft Fabric
Numa instância de SQL Server, esta vista de gestão dinâmica devolve uma tabela virtual para todas as transações ativas que geram ou potencialmente acedem a versões da linha. As transações são incluídas para uma ou mais das seguintes condições:
Quando uma ou ambas as opções de base de dados ALLOW_SNAPSHOT_ISOLATION e READ_COMMITTED_SNAPSHOT estão definidas para ON:
Existe uma linha para cada transação que está a correr sob o nível de isolamento de snapshot, ou nível de isolamento read-commit que utiliza versionamento de linha.
Existe uma linha para cada transação que faz com que uma versão de linha seja criada na base de dados atual. Por exemplo, a transação gera uma versão de linha ao atualizar ou eliminar uma linha na base de dados atual.
Quando um gatilho é disparado, existe uma linha para a transação sob a qual o gatilho está a ser executado.
Quando está a correr um procedimento de indexação online, existe uma linha para a transação que está a criar o índice.
Quando a sessão Multiple Active Results Sets (MARS) está ativada, existe uma linha para cada transação que está a aceder às versões da linha.
Esta vista de gestão dinâmica não inclui transações do sistema.
Observação
Para chamar isto de Azure Synapse Analytics ou Analytics Platform System (PDW), use o nome sys.dm_pdw_nodes_tran_active_snapshot_database_transactions. Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.
Sintaxe
sys.dm_tran_active_snapshot_database_transactions
Tabela retornada
| Nome da coluna | Tipo de dados | Description |
|---|---|---|
| transaction_id | bigint | Número de identificação único atribuído para a transação. O ID da transação é usado principalmente para identificar a transação nas operações de bloqueio. |
| transaction_sequence_num | bigint | Número de sequência da transação. Este é um número de sequência único que é atribuído a uma transação quando esta começa. Transações que não geram registos de versão e não utilizam digitalizações instantâneas não receberão um número de sequência de transação. |
| commit_sequence_num | bigint | Número de sequência que indica quando a transação termina (commit ou para). Para transações ativas, o valor é NULL. |
| is_snapshot | int | 0 = Não é uma transação de isolamento instantânea. 1 = É uma transação de isolamento de instantâneos. |
| session_id | int | ID da sessão que iniciou a transação. |
| 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. |
| max_version_chain_traversed | int | Comprimento máximo da cadeia de versões que é percorrida para encontrar a versão transacionalmente consistente. |
| average_version_chain_traversed | real | Número médio de versões de linhas nas cadeias de versões que são percorridas. |
| elapsed_time_seconds | bigint | Tempo decorrido desde que a transação recebeu o número de sequência da transação. |
| 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.
Observações
sys.dm_tran_active_snapshot_database_transactions reporta transações que recebem um número de sequência de transação (XSN). O XSN é atribuído quando a transação acede pela primeira vez à loja de versões. Numa base de dados que está ativada para isolamento de snapshots ou isolamento de leitura comprometida usando versionamento de linhas, os exemplos mostram quando um XSN é atribuído a uma transação:
Se uma transação estiver a correr ao nível de isolamento serializável, um XSN é atribuído quando a transação executa pela primeira vez uma instrução, como uma operação UPDATE, que provoca a criação de uma versão de linha.
Se uma transação estiver a correr sob isolamento instantâneo, é atribuída uma XSN quando qualquer instrução de linguagem de manipulação de dados (DML), incluindo uma operação SELECT, é executada.
Os números de sequência das transações são incrementados em série para cada transação iniciada numa instância do Motor de Base de Dados.
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 instantâneo
O XSN-60 é igual ao XSN-59.
A seguinte consulta é executada.
SELECT
transaction_id,
transaction_sequence_num,
commit_sequence_num,
is_snapshot session_id,
first_snapshot_sequence_num,
max_version_chain_traversed,
average_version_chain_traversed,
elapsed_time_seconds
FROM sys.dm_tran_active_snapshot_database_transactions;
Aqui está o conjunto de resultados.
transaction_id transaction_sequence_num commit_sequence_num
-------------- ------------------------ -------------------
9295 57 NULL
9324 58 NULL
9387 59 NULL
9400 60 NULL
is_snapshot session_id first_snapshot_sequence_num
----------- ----------- ---------------------------
0 54 0
0 53 0
1 52 57
1 51 57
max_version_chain_traversed average_version_chain_traversed
--------------------------- -------------------------------
0 0
0 0
1 1
1 1
elapsed_time_seconds
--------------------
419
397
359
333
A informação seguinte avalia os resultados de sys.dm_tran_active_snapshot_database_transactions:
XSN-57: Como esta transação não está a correr sob isolamento instantâneo, o
is_snapshotvalor efirst_snapshot_sequence_numsão0.transaction_sequence_nummostra que um número de sequência de transação foi atribuído a esta transação, porque uma ou ambas as opções de base de dados ALLOW_SNAPSHOT_ISOLATION ou READ_COMMITTED_SNAPSHOT estão ATIVADAS.XSN-58: Esta transação não está a correr sob isolamento de snapshot e aplica-se a mesma informação para o XSN-57.
XSN-59: Esta é a primeira transação ativa a correr sob isolamento de snapshot. Esta transação lê dados comprometidos antes do XSN-57, conforme indicado por
first_snapshot_sequence_num. A saída desta transação também mostra a cadeia máxima de versões percorrida por uma linha é1e percorreu uma média de1versões para cada linha acedida. Isto significa que as transações XSN-57, XSN-58 e XSN-60 não modificaram linhas nem foram confirmadas.XSN-60: Esta é a segunda transação a correr sob isolamento de snapshot. A saída mostra a mesma informação que o XSN-59.
Ver também
DEFINIR O NÍVEL DE ISOLAMENTO DA TRANSAÇÃO (Transact-SQL)
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)