sys.dm_tran_active_transactions (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

Retorna informações sobre transações para a instância do SQL Server.

Observação

Para chamar isso do Azure Synapse Analytics ou do Analytics Platform System (PDW), use o nome sys.dm_pdw_nodes_tran_active_transactions. Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.

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 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. Isso é usado para transações somente leitura.

4 = O processo de confirmação foi iniciado na transação distribuída. Destina-se somente a 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. Não há suporte. A compatibilidade futura não está garantida.
transaction_status2 int Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
dtc_state int Aplica-se a: Banco de Dados SQL do Azure (Versão inicial até a versão atual).

1 = ACTIVE

2 = PREPARED

3 = COMMITTED

4 = ABORTED

5 = RECOVERED
dtc_status int Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
dtc_isolation_level int Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
filestream_transaction_id varbinary(128) Aplica-se a: Banco de Dados SQL do Azure (Versão inicial até a versão atual).

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
pdw_node_id int Aplica-se a: Azure Synapse Analytics, Analytics Platform System (PDW)

O identificador do nó em que essa distribuição está ativada.

Permissões

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

Nos objetivos de serviço do SQL Database Basic, S0 e S1 e para bancos de dados em pools elásticos, a conta de administrador do servidor, a conta de administrador do Microsoft Entra ou a associação à ##MS_ServerStateReader##função de servidor é 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## são necessárias.

Permissões do SQL Server 2022 e posteriores

É necessária a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Exemplos

R. Usando sys.dm_tran_active_transactions com outros Detrans para encontrar informações sobre transações ativas

O exemplo a seguir mostra todas as transações ativas no sistema e fornece informações detalhadas sobre a transação, a sessão do usuário, o aplicativo que enviou e a consulta que a iniciou e muitos outros.

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;

Confira também

sys.dm_tran_session_transactions (Transact-SQL)
sys.dm_tran_database_transactions (Transact-SQL)
Exibições e funções de gerenciamento dinâmico (Transact-SQL)
Funções e exibições de gerenciamento dinâmico relacionadas à transação (Transact-SQL)