sys.dm_tran_active_transactions (Transact-SQL)

Aplica-se a: SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics endpoint em Microsoft FabricWarehouse em Microsoft FabricSQL database em Microsoft Fabric

A sys.dm_tran_active_transactions vista de gestão dinâmica devolve informações sobre transações para a instância.

Nome da Coluna Tipo de dados Description
transaction_id bigint ID da transação ao nível da instância, não ao nível da base de dados. É única apenas em todas as bases de dados dentro de uma instância, mas não única em todas as instâncias do servidor.
name nvarchar(32) Nome da transação. Isto é sobrescrito se a transação estiver marcada e o nome marcado substituir o nome da transação.
transaction_begin_time datetime Hora em que a transação começou.
transaction_type int Tipo de transação.

1 = Transação de leitura/escrita

2 = Transação apenas de leitura

3 = Transação do sistema

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

1 = A transação foi inicializada mas ainda não iniciou.

2 = A transação está ativa.

3 = A transação terminou. Usado para transações apenas de leitura.

4 = O processo de commit foi iniciado na transação distribuída. Apenas para transações distribuídas. A transação distribuída continua ativa, mas não é possível realizar processamento adicional.

5 = A transação está em estado preparado e à espera de resolução.

6 = A transação foi confirmada.

7 = A transação está a ser revertida.

8 = A transação foi revertida.
transaction_status int Identificado apenas para fins informativos. Não suportadas. A compatibilidade futura não é garantida.
transaction_status2 int Identificado apenas para fins informativos. Não suportadas. A compatibilidade futura não é 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. Não suportadas. A compatibilidade futura não é garantida.
dtc_isolation_level int Identificado apenas para fins informativos. Não suportadas. A compatibilidade futura não é garantida.
filestream_transaction_id varbinary(128) Aplica-se a: Banco de Dados SQL do Azure.

Identificado apenas para fins informativos. Não suportadas. A compatibilidade futura não é garantida.
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 Microsoft Fabric, é necessária a pertença ao papel de espaçode trabalho Contribuinte ou a um papel mais privilegiado para consultar sys.dm_tran_active_transactions.

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 VIEW permissão ESTADO DE DESEMPENHO DO SERVIDOR no servidor.

Observações

Para chamar a esta vista de gestão dinâmica do Azure Synapse Analytics ou Analytics Platform System (PDW), use o nome sys.dm_pdw_nodes_tran_active_transactions Esta sintaxe não é suportada por um pool SQL serverless no Azure Synapse Analytics.

Exemplos

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

O exemplo seguinte mostra quaisquer transações ativas no sistema. A consulta fornece informações detalhadas sobre a transação, a sessão do utilizador, a aplicação submetida e 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;