sys.dm_tran_active_transactions (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsEndpoint de análise SQL no Microsoft FabricArmazém no Microsoft FabricBanco de dados SQL no Microsoft Fabric

A sys.dm_tran_active_transactions visão de gerenciamento dinâmico retorna informações sobre as transações da instância.

Nome da Coluna Tipo de dados Descrição
transaction_id bigint ID da transação no nível da instância, e não no nível do banco de dados. É exclusiva apenas em todos os bancos de dados em uma instância, mas não em todas as instâncias de servidor.
name nvarchar(32) Nome da transação. O nome será substituído se a transação for marcada e o nome marcado substituirá o nome de transação.
transaction_begin_time datetime Hora de início da transação.
transaction_type int Tipo de transação.

1 = Transação de leitura/gravação

2 = Transação somente leitura

3 = Transação de sistema

4 = Transação distribuída
transaction_uow uniqueidentifier Identificador da UOW (unidade de trabalho) da transação para transações distribuídas. O coordenador de transações distribuídas da Microsoft (MS DTC) usa o identificador UOW para trabalhar com a transação distribuída.
transaction_state int 0 = A transação não foi completamente inicializada ainda.

1 = A transação foi inicializada, mas não foi iniciada.

2 = A transação está ativa.

3 = A transação foi encerrada. Usado para transações somente leitura.

4 = O processo de confirmação foi iniciado na transação distribuída. Apenas para transações distribuídas. A transação distribuída ainda está ativa, mas não poderá mais ser realizado o processamento.

5 = A transação está em um estado preparado e aguardando resolução.

6 = A transação foi confirmada.

7 = A transação está sendo revertida.

8 = A transação foi revertida.
transaction_status int Identificado apenas para fins informativos. Sem suporte. A compatibilidade futura não está garantida.
transaction_status2 int Identificado apenas para fins informativos. Sem suporte. A compatibilidade futura não está garantida.
dtc_state int Aplica-se a: Banco de Dados SQL do Azure.

1 = ATIVO

2 = PREPARADO

3 = COMPROMETIDO

4 = ABORTADO

5 = RECUPERADO
dtc_status int Identificado apenas para fins informativos. Sem suporte. A compatibilidade futura não está garantida.
dtc_isolation_level int Identificado apenas para fins informativos. Sem suporte. A compatibilidade futura não está garantida.
filestream_transaction_id varbinary(128) Aplica-se a: Banco de Dados SQL do Azure.

Identificado apenas para fins informativos. Sem suporte. A compatibilidade futura não está garantida.
pdw_node_id int Aplica-se ao: Azure Synapse Analytics

O identificador do nó no qual essa distribuição está.

Permissions

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

No Microsoft Fabric, é necessária a filiação ao papel de workspaceContribuidor ou a um papel mais privilegiado para consultar sys.dm_tran_active_transactions.

No Banco de Dados SQL Básico, 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 administração do Microsoft Entra ou a associação na função de servidor ##MS_ServerStateReader## é necessária. 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## é necessária.

Permissões para SQL Server 2022 e posterior

Requer VIEW permissão ESTADO DE DESEMPENHO DO SERVIDOR no servidor.

Observações

Para chamar esta visão de gerenciamento dinâmico do Azure Synapse Analytics, use o nome sys.dm_pdw_nodes_tran_active_transactions Esta sintaxe não é suportada por pool SQL serverless no Azure Synapse Analytics.

Examples

A. Use sys.dm_tran_active_transactions com outros DMVs para encontrar informações sobre transações ativas

O exemplo a seguir mostra quaisquer transações ativas no sistema. A consulta fornece informações detalhadas sobre a transação, a sessão do usuário, a aplicação que foi enviada, a consulta que a iniciou, entre muitas outras.

SELECT
  GETDATE() as now,
  DATEDIFF(SECOND, transaction_begin_time, GETDATE()) as tran_elapsed_time_seconds,
  st.session_id,
  txt.text, 
  *
FROM
  sys.dm_tran_active_transactions at
  INNER JOIN sys.dm_tran_session_transactions st ON st.transaction_id = at.transaction_id
  LEFT OUTER JOIN sys.dm_exec_sessions sess ON st.session_id = sess.session_id
  LEFT OUTER JOIN sys.dm_exec_connections conn ON conn.session_id = sess.session_id
    OUTER APPLY sys.dm_exec_sql_text(conn.most_recent_sql_handle)  AS txt
ORDER BY
  tran_elapsed_time_seconds DESC;