有没有办法在SQL Server 2000数据库上列出打开的事务?

有谁知道任何方式列出SQL Server 2000数据库上的打开事务?

我知道我可以在SQL 2005(和更高版本)数据库版本上查询sys.dm_tran_session_transactions ,但是这在SQL 2000上是不可用的。

对于所有数据库查询sys.sysprocesses

 SELECT * FROM sys.sysprocesses WHERE open_tran = 1 

对于当前的数据库使用:

 DBCC OPENTRAN 

DBCC OPENTRAN有助于识别可能阻止日志截断的活动事务。 DBCC OPENTRAN显示有关最早的活动事务以及指定数据库的事务日志中最旧的分布式和非分布式复制事务(如果有)的信息。 仅当日志中存在活动事务或数据库包含复制信息时,才会显示结果。

如果日志中没有活动事务,则显示信息性消息。

DBCC OPENTRAN

您可以通过以下查询获取所有活动交易信息

 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 

它会给出类似的结果 在这里输入图像说明

并通过引用会话ID通过下面的KILL查询帮助closures该事务

 KILL 77