sys.dm_tran_active_transactions (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Devuelve información sobre las transacciones de la instancia de SQL Server.

Nota:

Para llamarlo desde Azure Synapse Analytics o Analytics Platform System (PDW), use el nombre sys.dm_pdw_nodes_tran_active_transactions. El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.

Nombre de la columna Tipo de datos Descripción
transaction_id bigint Identificador de la transacción en el nivel de instancia, no en el de base de datos. Es solo exclusiva en todas las bases de datos dentro de una instancia, pero no es exclusiva en todas las instancias del servidor.
name nvarchar(32) Nombre de transacción. Se sobrescribe si la transacción está marcada y el nombre marcado reemplaza el nombre de transacción.
transaction_begin_time datetime Hora en que se ha iniciado la transacción.
transaction_type int Tipo de transacción.

1 = Transacciones de lectura/escritura

2 = Transacción de solo lectura

3 = Transacción de sistema

4 = Transacción distribuida
transaction_uow uniqueidentifier Identificador de la unidad de trabajo (UOW) de la transacción para transacciones distribuidas. MS DTC usa el identificador UOW para trabajar con la transacción distribuida.
transaction_state int 0 = La transacción aún no se ha inicializado completamente.

1 = La transacción se ha inicializado, pero no ha comenzado.

2 = La transacción está activa.

3 = La transacción ha finalizado. Se utiliza para transacciones de solo lectura.

4 = El proceso de confirmación se ha iniciado en la transacción distribuida. Es solo para transacciones distribuidas. La transacción distribuida aún está activa, pero no se puede realizar ningún otro proceso adicional.

5 = La transacción está en estado de preparada y esperando una resolución.

6 = Se ha confirmado la transacción.

7 = La transacción se está revirtiendo.

8 = Se ha revertido la transacción.
transaction_status int Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
transaction_status2 int Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
dtc_state int Se aplica a: Azure SQL Database (versión inicial a través de la versión actual).

1 = ACTIVE

2 = PREPARED

3 = COMMITTED

4 = ABORTED

5 = RECOVERED
dtc_status int Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
dtc_isolation_level int Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
filestream_transaction_id varbinary(128) Se aplica a: Azure SQL Database (versión inicial a través de la versión actual).

Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
pdw_node_id int Se aplica a: Azure Synapse Analytics, Sistema de la plataforma de análisis (PDW)

Identificador del nodo en el que se encuentra esta distribución.

Permisos

En SQL Server y SQL Managed Instance, requiere el permiso VIEW SERVER STATE.

En los objetivos de servicio de SQL Database Basic, S0 y S1, y para las bases de datos de grupos elásticos, se requiere la cuenta de administrador del servidor, la cuenta de administrador de Microsoft Entra o la pertenencia al rol de ##MS_ServerStateReader##servidor. En el resto de objetivos del servicio de SQL Database, se requiere el permiso VIEW DATABASE STATE en la base de datos o la pertenencia en el rol del servidor ##MS_ServerStateReader##.

Permisos para SQL Server 2022 y versiones posteriores

Requiere el permiso VER ESTADO DE RENDIMIENTO DEL SERVIDOR en el servidor.

Ejemplos

A Uso de sys.dm_tran_active_transactions con otras DMV para buscar información sobre transacciones activas

En el ejemplo siguiente se muestran las transacciones activas en el sistema y se proporciona información detallada sobre la transacción, la sesión del usuario, la aplicación que envió y la consulta que la inició y muchas otras.

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;

Consulte también

sys.dm_tran_session_transactions (Transact-SQL)
sys.dm_tran_database_transactions (Transact-SQL)
Funciones y vistas de administración dinámica (Transact-SQL)
Funciones y vistas de administración dinámica relacionadas con transacciones (Transact-SQL)