Partilhar via


sys.dm_tran_active_transactions (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no 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 suportado. A compatibilidade futura não é garantida.
transaction_status2 int Identificado apenas para fins informativos. Não suportado. 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 suportado. A compatibilidade futura não é garantida.
dtc_isolation_level int Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida.
filestream_transaction_id Varbinário(128) Aplica-se a: Banco de Dados SQL do Azure.

Identificado apenas para fins informativos. Não suportado. 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 a permissão VIEW SERVER PERFORMANCE STATE 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.

Examples

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;