会话与事务

3

当我阅读有关 MARS 的内容时,我看到了以下陈述:

启用 MARS 与 SQL Server 一起使用时,每个使用的命令对象都会向连接添加一个会话。

我以前听说过会话,但无法理解它如何在内部工作以及如何将会话添加到连接中。我知道什么是事务和隔离类型之类的东西。这两者有什么区别呢?


1
你知道与.NET相关的Session是什么吗?它在数据库中也类似。它是一个半永久性的状态容器。 - Jack Marchetti
@Jack,你是指会话状态吗? - Sadiq
如果它类似于ASP.Net中的会话,那么如果一个SQL语句(SELECT)正在迭代执行,与此同时,如果另一个(SELECT)语句在第一个SELECT语句完成之前开始执行,那么这两个命令都将使用同一个会话,并且结果集将以同步方式被返回。我说得对吗? - Sadiq
1个回答

3
会话是SQL Server中的一个概念,用于逻辑地将应用程序与数据库的交互分组。临时表的作用域是会话级别的。当您调用 SqlConnection.Open 时,会获得一个新的会话。
以下是我对MARS内部工作原理的理解:
SQL Server通过为每个连接同时创建多个会话来实现MARS。每个并发命令都在自己的会话对象中运行。您可以在会话DMV中查看这一点。
我认为您不需要了解或关心这些。这些内部细节不会影响您使用该功能的方式。特别是,事务和隔离性不受影响(因为您提到了这些术语)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接