SQL Server 连接和事务相关的问题。

时间:2021-11-08 18:23:50

方法 1、 dbcc opentran + sys.dm_exec_connections

dbcc opentran;

SQL Server 连接和事务相关的问题。

dbcc opentran 针对当前数据库

dbcc opentran('Studio') 针对指定数据库

可以看到最旱的活动事务是 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

SQL Server 连接和事务相关的问题。

这里可以看出 session 54 最后做的事是 ’select @@spid'  还记得最老的活动事务是 54打开的吗?可是这个事务并不是为 @@spid 打开的

SQL Server 连接和事务相关的问题。

总结:

dbcc opentran 只返回最老是活动事务、并不是session 最后的事务,sys.dm_exec_connections 只可以得到最后事务的sql代码引用。

若要找到最老的事务它在做什么,这个方法还是行不通。