3

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

select * from sys.dm_exec_sessions 

它向我展示了其他列 astatus和 atransaction_isolation_level列。

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

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

  2. 有一些(几个)会话处于睡眠状态。这意味着什么?我们应该担心这个吗?这些来自 Web 服务器的事务是否回滚失败?

4

2 回答 2

4

据我了解,可以使用此会话运行多个查询/事务。

这是不正确的。您将始终能够执行最多一个查询,并且在一个会话中最多有一个用户活动事务,永远不会超过任何一个。

一个连接可以有多个会话,但这是另一回事。sys.dm_exec_connections

如果您发现 SERIALIZABLE 会话并且想知道为什么,请记住使用 new TransactionScope() 被认为是有害的

于 2012-07-04T19:52:15.910 回答
1

会话本身有一个 transaction_isolation_level。并且在该会话中运行的批处理/请求将使用该 transaction_isolation_level ,除非它明确更改它。

Sleeping 状态仅表示会话处于空闲状态并且当前未运行批处理/请求。(IE,它正在等待它的客户端连接向它发送要执行的命令)。通常没有什么可担心的。

sys.dm_exec_sessions 的官方文档在这里:http: //msdn.microsoft.com/en-us/library/ms176013.aspx

于 2012-07-04T18:23:41.273 回答