Home  >  Article  >  Database  >  sqlserver中查找长时间未提交事务

sqlserver中查找长时间未提交事务

WBOY
WBOYOriginal
2016-06-07 15:51:431558browse

欢迎进入Windows社区论坛,与300万技术人员互动交流 >>进入 因为也从sys.dm_tran_session_transactions的第一个查询中得知事务ID,所以可以使用sys.dm_tran_active_transactions来了解更多事务本身的内容 代码如下: select transaction_begin_time, case tra

欢迎进入Windows社区论坛,与300万技术人员互动交流 >>进入

 

  因为也从sys.dm_tran_session_transactions的第一个查询中得知事务ID,所以可以使用sys.dm_tran_active_transactions来了解更多事务本身的内容

  代码如下:

  select transaction_begin_time,

  case transaction_type

  when 1 then 'Read/Write transaction'

  when 2 then 'Read-Only transaction'

  when 3 then 'System transaction'

  when 4 then 'Distributed transaction'

  end tran_Type,

  case transaction_state

  when 0 then 'not been comoletely initaialiaed yet'

  when 1 then 'initaialiaed but ha notstarted'

  when 2 then 'active'

  when 3 then 'ended (read-only transaction)'

  when 4 then 'commit initiated for distributed transaction'

  when 5 then 'transaction prepared and waiting resolution'

  when 6 then 'commited'

  when 7 then 'being rolled back'

  when 0 then 'been rolled back'

  end transaction_state

  from

  sys.dm_tran_active_transactions

  where transaction_ID=455520

  代码如下:

  /*结果:

  transaction_begin_time tran_Type transaction_state

  2010-12-24 14:05:29.170 Read/Write transaction active

  */

  小结:这里演示了使用DMV 排除故障和调查长时间的活动事务的一般技巧。基本步骤如下:

  1、查询sys.dm_tran_session_transactions获取会话ID和事务ID之间的映射。

  2、查询sys.dm_exec_connections和sys.dm_exec_sql_text查找会话最新执行的命令(most_recent_sql_Handle列)

  3、最后,查询sys.dm_tran_active_transactions确定事务被打开了多少时间、事务的类型和事务的状态。

  使用这个技巧可以回到应用程序去查明调用的被抛弃的事务(打开但从未提交)以及那些运行时间太长或对于应用程序来说是不必要的不恰当事务。

  [1] [2] 

sqlserver中查找长时间未提交事务

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn