¿Hay alguna forma de enumerar las transacciones abiertas en la base de datos SQL Server 2000?

100

¿Alguien sabe de alguna forma de listar transacciones abiertas en la base de datos SQL Server 2000?

Soy consciente de que puedo consultar la vista sys.dm_tran_session_transactionsen las versiones de la base de datos SQL 2005 (y posteriores), sin embargo, esto no está disponible en SQL 2000.

James Wiseman
fuente

Respuestas:

156

Para todas las bases de datos, consulte sys.sysprocesses

SELECT * FROM sys.sysprocesses WHERE open_tran = 1

Para el uso actual de la base de datos:

DBCC OPENTRAN
gbn
fuente
34

Puede obtener toda la información de la transacción activa con la ayuda de la siguiente consulta

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 dará a continuación un resultado similar ingrese la descripción de la imagen aquí

y cierra esa transacción con la ayuda debajo de la consulta KILL haciendo referencia a la identificación de sesión

KILL 77
Rinoy Ashokan
fuente
Vaya, este es muy bonito, me gusta la cantidad de datos que se proporcionan, la única desventaja es que necesitas ser administrador para poder ejecutarlo, DBCC OPENTRAN necesita menos permisos. Pero aún así ... muy bien
Yogurtu
Muy útil, ¡gracias! Si respondió a la pregunta del OP (SQL 2000), debería haber sido la respuesta aceptada. Tenga un voto a favor ...
Ingeniero
Impresionante, obtuve lo que quería.
Vipul
23

DBCC OPENTRAN ayuda a identificar las transacciones activas que pueden estar evitando 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.

DBCC OPENTRAN

codificador
fuente
0

Use esto porque siempre que la transacción abra más de una transacción, a continuación, funcionará SELECCIONAR * DE sys.sysprocesses DONDE open_tran <> 0

kanti
fuente