首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

查看数据库中有哪些活动的事宜,对应的会话id,执行的语句

2013-10-12 
查看数据库中有哪些活动的事务,对应的会话id,执行的语句select dbt.database_id,DB_NAME(dbt.database_id)

查看数据库中有哪些活动的事务,对应的会话id,执行的语句

select dbt.database_id,       DB_NAME(dbt.database_id) '数据库名',              dbt.transaction_id,       at.name,       at.transaction_begin_time,              case at.transaction_type         --事务类型              when 1 then '读/写事务'             when 2 then '只读事务'             when 3 then '系统事务'             when 4 then '分布式事务'         end 'transaction类型',                  case at.transaction_state             when 0 then '事务尚未完全初始化'             when 1 then '事务已初始化但尚未启动'             when 2 then '事务处于活动状态'             when 3 then '事务已结束。该状态用于只读事务'             when 4 then '已对分布式事务启动提交进程'             when 5 then '事务处于准备就绪状态且等待解析'             when 6 then '事务已提交'             when 7 then '事务正在被回滚'             when 8 then '事务已回滚'         end  'transaction状态',              st.session_id,         tt.text as '最近执行的语句',              es.program_name       from sys.dm_tran_database_transactions dbtleft join sys.dm_tran_active_transactions at        on dbt.transaction_id = at.transaction_idleft join sys.dm_tran_session_transactions st        on at.transaction_id = st.transaction_idleft join sys.dm_exec_sessions es       on st.session_id = es.session_idleft join sys.dm_exec_connections ec       on es.session_id = ec.session_idouter apply sys.dm_exec_sql_text(ec.most_recent_sql_handle) tt


进一步查询,这个会话获取了哪些资源

select db_name(resource_database_id) 'DatabaseName',       object_name(resource_associated_entity_id) 'TableName',       request_type,       request_mode,       request_status select * from sys.dm_tran_locks


再进一步,查询这个会话有没有阻塞其他会话,以及阻塞时间:

select session_id,              --某个会话       wait_duration_ms / 1000, --等待秒数       wait_type,          --等待类型,可能是进程间的阻塞,也有可能是等待IO完成              blocking_session_id --被这个会话阻塞的,如果有的话       from sys.dm_os_waiting_taskswhere blocking_session_id = xxx


 再进一步,合并上面2个:

select wt.session_id,              --某个会话       wait_duration_ms / 1000 as 'wait seconds', --等待秒数       wait_type,          --等待类型,可能是进程间的阻塞,也有可能是等待IO完成              blocking_session_id, --被这个会话阻塞的,如果有的话              tl.request_mode,     --请求模式,比如S、IX、X       tl.request_type,     --请求类型,比如Lock       tl.request_status    --是否grantfrom sys.dm_os_waiting_tasks wtleft join sys.dm_tran_locks tl       on wt.session_id = tl.request_session_id 


 

热点排行