事务的状态

Posted gered

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事务的状态相关的知识,希望对你有一定的参考价值。

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

转自: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  

 

以上是关于事务的状态的主要内容,如果未能解决你的问题,请参考以下文章

如何保存具有列表视图的片段状态

片段事务中的实例化错误

BottomNavigationView 滞后于片段事务

VSCode自定义代码片段13——Vue的状态大管家

VSCode自定义代码片段13——Vue的状态大管家

VSCode自定义代码片段13——Vue的状态大管家