了解SQL Server中的sys.dm_exec_sessions

时间:2012-07-04 17:50:17

标签: sql-server sql-server-2008

关于dm_exec_sessions的几个问题。当我运行查询

select * from sys.dm_exec_sessions 

它在其他列中显示了statustransaction_isolation_level列。

据我了解,sys.dm_exec_sessions每个经过身份验证的会话都会返回一行。根据我的理解,可以使用此会话运行多个查询/事务。

  1. 每个会话返回transaction_isolation_level的含义是什么?它是使用该连接在数据库上运行的最后一个事务的隔离级别吗?

  2. 有一些(一对)会话处于休眠状态。那是什么意思?我们应该担心吗?来自Web服务器的这些事务是否未能回滚?

2 个答案:

答案 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