关于dm_exec_sessions
的几个问题。当我运行查询
select * from sys.dm_exec_sessions
它在其他列中显示了status
和transaction_isolation_level
列。
据我了解,sys.dm_exec_sessions
每个经过身份验证的会话都会返回一行。根据我的理解,可以使用此会话运行多个查询/事务。
每个会话返回transaction_isolation_level
的含义是什么?它是使用该连接在数据库上运行的最后一个事务的隔离级别吗?
有一些(一对)会话处于休眠状态。那是什么意思?我们应该担心吗?来自Web服务器的这些事务是否未能回滚?
答案 0 :(得分:4)
根据我的理解,可以使用此运行多个查询/事务 会话。
这是不正确的。您将始终能够执行最多一个查询,并且在一个会话中最多只能有一个用户活动事务,而且不会超过其中一个。
连接可以有多个会话,但这是另一回事。 sys.dm_exec_connections
如果您发现SERIALIZABLE会话并且您想知道原因,请记住using new TransactionScope() Is Considered Harmful
答案 1 :(得分:1)
会话本身有一个transaction_isolation_level。并且在该会话中运行的批处理/请求将使用该transaction_isolation_level,除非它明确地更改它。
“睡眠”状态仅表示会话空闲且当前未运行批处理/请求。 (例如,它正在等待它的客户端连接发送一个命令来执行)。通常不用担心。
sys.dm_exec_sessions的官方文档位于:http://msdn.microsoft.com/en-us/library/ms176013.aspx