Existe uma maneira de listar transações abertas no banco de dados do SQL Server 2000?

100

Alguém sabe de alguma maneira de listar as transações abertas no banco de dados SQL Server 2000?

Estou ciente de que posso consultar o modo de exibição sys.dm_tran_session_transactionsnas versões do banco de dados SQL 2005 (e posteriores), no entanto, isso não está disponível no SQL 2000.

James Wiseman
fonte

Respostas:

156

Para todos os bancos de dados, consulte sys.sysprocesses

SELECT * FROM sys.sysprocesses WHERE open_tran = 1

Para o banco de dados atual, use:

DBCC OPENTRAN
gbn
fonte
34

Você pode obter todas as informações da transação ativa com a ajuda da consulta abaixo

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

e dará abaixo um resultado semelhante insira a descrição da imagem aqui

e você fecha essa transação pela ajuda abaixo da consulta KILL , referindo-se ao id de sessão

KILL 77
Rinoy Ashokan
fonte
Uau, este é muito bom, gosto da quantidade de dados fornecidos, o único contra é que você precisa ser administrador para executá-lo, DBCC OPENTRAN precisa de menos permissões. Mas ainda ... muito bom
Yogurtu
Muito útil, obrigado! Se respondesse a pergunta do OP (SQL 2000), deveria ter sido a resposta aceita. Tenha um voto positivo ...
Invertido Engenheiro
Incrível, consegui o que queria.
Vipul
23

DBCC OPENTRAN ajuda a identificar transações ativas que podem estar impedindo o truncamento de log. DBCC OPENTRAN exibe informações sobre a transação ativa mais antiga e as transações replicadas distribuídas e não distribuídas mais antigas, se houver, no log de transações do banco de dados especificado. Os resultados são exibidos apenas se houver uma transação ativa existente no log ou se o banco de dados contiver informações de replicação.

Uma mensagem informativa será exibida se não houver transações ativas no log.

DBCC OPENTRAN

codingbadger
fonte
0

Use isso porque sempre que a transação abrir mais de uma transação, a seguir funcionará SELECT * FROM sys.sysprocesses WHERE open_tran <> 0

kanti
fonte