是否有方法列出SQL Server 2000数据库上打开的事务?
有人知道在SQLServer2000数据库上列出打开的事务的方法吗是否有方法列出SQL Server 2000数据库上打开的事务?,sql,sql-server,transactions,sql-server-2000,Sql,Sql Server,Transactions,Sql Server 2000,有人知道在SQLServer2000数据库上列出打开的事务的方法吗 我知道我可以在SQL 2005(及更高版本)数据库版本上查询viewsys.dm_tran_session_transactions,但在SQL 2000上不可用。DBCC OPENTRAN有助于识别可能阻止日志截断的活动事务。DBCC OPENTRAN在指定数据库的事务日志中显示有关最早的活动事务以及最早的分布式和非分布式复制事务(如果有)的信息。仅当日志中存在活动事务或数据库包含复制信息时,才会显示结果 如果日志中没有活动事
我知道我可以在SQL 2005(及更高版本)数据库版本上查询view
sys.dm_tran_session_transactions
,但在SQL 2000上不可用。DBCC OPENTRAN有助于识别可能阻止日志截断的活动事务。DBCC OPENTRAN在指定数据库的事务日志中显示有关最早的活动事务以及最早的分布式和非分布式复制事务(如果有)的信息。仅当日志中存在活动事务或数据库包含复制信息时,才会显示结果
如果日志中没有活动事务,将显示一条信息性消息
对于所有数据库,查询sys.sysprocesss
SELECT * FROM sys.sysprocesses WHERE open_tran = 1
对于当前数据库使用:
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 77
使用此选项是因为每当事务打开多个事务时,下面的操作都会起作用
从sys.sysprocesss中选择*open_tran 0哇,这一个非常好,我喜欢提供的数据量,唯一的缺点是您需要成为管理员才能运行它,DBCC OPENTRAN需要更少的权限。但还是。。。非常好非常有用,谢谢!如果它回答了OP的问题(SQL 2000),那么它应该是被接受的答案。投票表决。。。