方法 1、 dbcc opentran + sys.dm_exec_connections
dbcc opentran;
可以看到最旱的活动事务是 54 这个session 发起的。下面看一下它做了点什么。
select conn.session_id,sess.program_name,sqltext.text
from sys.dm_exec_connections as conn cross apply sys.dm_exec_sql_text(conn.most_recent_sql_handle) as sqltext,sys.dm_exec_sessions sess
where conn.session_id = sess.session_id and conn.session_id = 54;
go
这里可以看出 session 54 最后做的事是 ’select @@spid‘ 还记得最老的活动事务是 54打开的吗?可是这个事务并不是为 @@spid 打开的
总结:
dbcc opentran 只返回最老是活动事务、并不是session 最后的事务,sys.dm_exec_connections 只可以得到最后事务的sql代码引用。
若要找到最老的事务它在做什么,这个方法还是行不通。