Saltar al contenido

¿Cómo verificar las transacciones activas en SQL Server 2014?

Solución:

  1. Consulta con sys.sysprocesses

    SELECT * FROM sys.sysprocesses WHERE open_tran = 1
    
  2. DBCC OPENTRAN : ayuda a identificar las transacciones activas que pueden estar impidiendo el truncamiento del registro. DBCC OPENTRAN muestra información sobre la transacción activa más antigua y las transacciones replicadas distribuidas y no distribuidas más antiguas, si las hay, dentro del registro de transacciones de la base de datos especificada. Los resultados se muestran solo si existe una transacción activa en el registro o si la base de datos contiene información de replicación. Se muestra un mensaje informativo si no hay transacciones activas en el registro.

  3. sys.dm_tran_active_transactions

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

ingrese la descripción de la imagen aquí

¿Se pregunta acerca de Transaction?

Una transacción es una sola unidad de trabajo. Si una transacción es exitosa, todas las modificaciones de datos realizadas durante la transacción se confirman y se convierten en una parte permanente de la base de datos.

Encuentre más en docs

Traduzca la 3. consulta que comenta Tharif.

select transaction_id, name, transaction_begin_time
 ,case transaction_type 
    when 1 then '1 = Read/write transaction'
    when 2 then '2 = Read-only transaction'
    when 3 then '3 = System transaction'
    when 4 then '4 = Distributed transaction'
end as transaction_type 
,case transaction_state 
    when 0 then '0 = The transaction has not been completely initialized yet'
    when 1 then '1 = The transaction has been initialized but has not started'
    when 2 then '2 = The transaction is active'
    when 3 then '3 = The transaction has ended. This is used for read-only transactions'
    when 4 then '4 = The commit process has been initiated on the distributed transaction'
    when 5 then '5 = The transaction is in a prepared state and waiting resolution'
    when 6 then '6 = The transaction has been committed'
    when 7 then '7 = The transaction is being rolled back'
    when 8 then '8 = The transaction has been rolled back'
end as transaction_state
,case dtc_state 
    when 1 then '1 = ACTIVE'
    when 2 then '2 = PREPARED'
    when 3 then '3 = COMMITTED'
    when 4 then '4 = ABORTED'
    when 5 then '5 = RECOVERED'
end as dtc_state 
,transaction_status, transaction_status2,dtc_status, dtc_isolation_level, filestream_transaction_id
from sys.dm_tran_active_transactions

Si desea conocer más detalles sobre las sesiones activas, como ID de sesión, Nombre de host, Nombre de inicio de sesión, ID de transacción, Nombre de transacción, Hora de inicio de la transacción, ID de base de datos, Nombre de la base de datos, puede usar la siguiente consulta sql

SELECT
trans.session_id AS [SESSION ID],
ESes.host_name AS [HOST NAME],login_name AS [Login NAME],
trans.transaction_id AS [TRANSACTION ID],
tas.name AS [TRANSACTION NAME],tas.transaction_begin_time AS [TRANSACTION 
BEGIN TIME],
tds.database_id AS [DATABASE ID],DBs.name AS [DATABASE NAME]
FROM sys.dm_tran_active_transactions tas
JOIN sys.dm_tran_session_transactions trans
ON (trans.transaction_id=tas.transaction_id)
LEFT OUTER JOIN sys.dm_tran_database_transactions tds
ON (tas.transaction_id = tds.transaction_id )
LEFT OUTER JOIN sys.databases AS DBs
ON tds.database_id = DBs.database_id
LEFT OUTER JOIN sys.dm_exec_sessions AS ESes
ON trans.session_id = ESes.session_id
WHERE ESes.session_id IS NOT NULL

y obtendrás el resultado algo como
ingrese la descripción de la imagen aquí

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *