• 事务的状态


    关键词:事务的状态,查看事务的状态,事务的监控,事务的执行情况跟踪

    转自:https://www.cnblogs.com/micro-chen/p/7722702.html?tdsourcetag=s_pctim_aiomsg

    [sql] view plain copy
    ---查看现在所有的事务  
      
    select '正在运行事务的会话的 ID'=session_id,                     --session_id与transaction_id的对应关系    
           '事务的 ID'=transaction_id,  
           '正在处理事务的会话中的活动请求数'=enlist_count,    
            '用户or系统事务'=case is_user_transaction when 1 then '事务由用户请求启动'  
                                                        when 0 then '系统事务'  
                                                        end,  
            '本地or分布式事务'= case is_local when 0 then '分布式事务或登记的绑定会话事务'  
                                                        when 1 then '本地事务'  
                                                        end,  
            '分布式事务类型'=case is_enlisted when 0 then '非登记的分布式事务'  
                                                        when 1 then '登记的分布式事务'  
                                                        end,  
            '绑定会话中处于状态'=case is_enlisted when 0 then '事务在通过绑定会话的会话中处于非活动状态。'  
                                                        when 1 then '事务在通过绑定会话的会话中处于活动状态'  
                                                        end        
            from sys.dm_tran_session_transactions  --会话中的事务,识别所有打开的事务     
            where is_user_transaction =1    
      
      
    ----活动事务的具体信息    
    select dt.transaction_id,    
           dt.name,                            
           dt.transaction_begin_time,    
           case dt.transaction_type           
               when 1 then '读/写事务'    
               when 2 then '只读事务'    
               when 3 then '系统事务'    
               when 4 then '分布式事务'    
           end 'transaction type',    
               
           case dt.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 state',  
           case dt.dtc_state  
                when 1 then '活动'  
                when 2 then '准备就绪'  
                when 3 then '已提交'  
                when 4 then '中止'  
                when 5 then '已恢复'  
                end dtc_state  
                    
    from sys.dm_tran_active_transactions dt    --活动的事务    
    where transaction_id = 123    
      
      
    ---根据事务ID 和其对应的session_id 找到活动事务对应的执行语句  
      
    select  dc.session_id,  
            ds.login_name,  
            ds.login_time,                 
            dc.connect_time,  
            dc.client_net_address,   
            ds.host_name,  
            ds.program_name,  
            case ds.status when 'sleeping' then '睡眠 - 当前没有运行任何请求 '  
                            when 'running' then '正在运行 - 当前正在运行一个或多个请求 '  
                            when 'Dormancy' then '休眠 – 会话因连接池而被重置,并且现在处于登录前状态'  
                            when 'Pre-connected' then '预连接 - 会话在资源调控器分类器中'  
                            end as status ,  
            ds.cpu_time as cpu_time_ms,  
            ds.memory_usage*8 as memory_kb,  
            ds.total_elapsed_time as total_elapsed_time_ms,  
            case ds.transaction_isolation_level when 0 then '未指定'  
                                            when 1 then '未提交读取'  
                                            when 2 then '已提交读取'  
                                            when 3 then '可重复'  
                                            when 4 then '可序列化'  
                                            when 5 then '快照'  
                                            end '会话的事务隔离级别',   
            dt.text                
    from sys.dm_exec_connections  dc        --执行连接,最近执行的查询信息    
    cross apply sys.dm_exec_sql_text(dc.most_recent_sql_handle) dt  
    join sys.dm_exec_sessions ds  on dc.session_id=ds.session_id  
    where dc.session_id = 55  
    复制代码
     
    
    [sql] view plain copy  
    ---查看现在所有的事务  
      
    select '正在运行事务的会话的 ID'=session_id,                     --session_id与transaction_id的对应关系    
           '事务的 ID'=transaction_id,  
           '正在处理事务的会话中的活动请求数'=enlist_count,    
            '用户or系统事务'=case is_user_transaction when 1 then '事务由用户请求启动'  
                                                        when 0 then '系统事务'  
                                                        end,  
            '本地or分布式事务'= case is_local when 0 then '分布式事务或登记的绑定会话事务'  
                                                        when 1 then '本地事务'  
                                                        end,  
            '分布式事务类型'=case is_enlisted when 0 then '非登记的分布式事务'  
                                                        when 1 then '登记的分布式事务'  
                                                        end,  
            '绑定会话中处于状态'=case is_enlisted when 0 then '事务在通过绑定会话的会话中处于非活动状态。'  
                                                        when 1 then '事务在通过绑定会话的会话中处于活动状态'  
                                                        end        
            from sys.dm_tran_session_transactions  --会话中的事务,识别所有打开的事务     
            where is_user_transaction =1    
      
      
    ----活动事务的具体信息    
    select dt.transaction_id,    
           dt.name,                            
           dt.transaction_begin_time,    
           case dt.transaction_type           
               when 1 then '读/写事务'    
               when 2 then '只读事务'    
               when 3 then '系统事务'    
               when 4 then '分布式事务'    
           end 'transaction type',    
               
           case dt.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 state',  
           case dt.dtc_state  
                when 1 then '活动'  
                when 2 then '准备就绪'  
                when 3 then '已提交'  
                when 4 then '中止'  
                when 5 then '已恢复'  
                end dtc_state  
                    
    from sys.dm_tran_active_transactions dt    --活动的事务    
    where transaction_id = 123    
      
      
    ---根据事务ID 和其对应的session_id 找到活动事务对应的执行语句  
      
    select  dc.session_id,  
            ds.login_name,  
            ds.login_time,                 
            dc.connect_time,  
            dc.client_net_address,   
            ds.host_name,  
            ds.program_name,  
            case ds.status when 'sleeping' then '睡眠 - 当前没有运行任何请求 '  
                            when 'running' then '正在运行 - 当前正在运行一个或多个请求 '  
                            when 'Dormancy' then '休眠 – 会话因连接池而被重置,并且现在处于登录前状态'  
                            when 'Pre-connected' then '预连接 - 会话在资源调控器分类器中'  
                            end as status ,  
            ds.cpu_time as cpu_time_ms,  
            ds.memory_usage*8 as memory_kb,  
            ds.total_elapsed_time as total_elapsed_time_ms,  
            case ds.transaction_isolation_level when 0 then '未指定'  
                                            when 1 then '未提交读取'  
                                            when 2 then '已提交读取'  
                                            when 3 then '可重复'  
                                            when 4 then '可序列化'  
                                            when 5 then '快照'  
                                            end '会话的事务隔离级别',   
            dt.text                
    from sys.dm_exec_connections  dc        --执行连接,最近执行的查询信息    
    cross apply sys.dm_exec_sql_text(dc.most_recent_sql_handle) dt  
    join sys.dm_exec_sessions ds  on dc.session_id=ds.session_id  
    where dc.session_id = 55  
  • 相关阅读:
    .NET的URL重写
    基于Bootstrap+jQuery.validate Form表单验证实践
    JS正则表达式验证数字非常全
    Windows 系统下设置Nodejs NPM全局路径
    PHP计划任务:如何使用Linux的Crontab执行PHP脚本(转)
    linux使用crontab实现PHP执行定时任务(转)
    phpstorm 设置
    phpdoctor 安装,配置,生成文档
    phpQuery—基于jQuery的PHP实现(转)
    将C#文档注释生成.chm帮助文档(转)
  • 原文地址:https://www.cnblogs.com/gered/p/10670377.html
Copyright © 2020-2023  润新知