SQL Server中Session和Connection的区别

24

就临时表而言,它们是与连接相关的。也就是说,一个连接中创建的表只对该连接可用,并在连接断开或销毁时自动删除。

在SQL Server中,连接和会话有什么区别?


5
这个问题已经在这里得到了提问和回答:http://dba.stackexchange.com/questions/13698/what-is-the-difference-between-a-connection-and-a-session - Tim Biegeleisen
在SQL Server中,“会话”和“连接”有什么区别?链接是指客户端与数据库服务器之间的直接通信,并且在每个链接中可以使用多个会话。会话是指在单个链接上打开的一个或多个命令批处理序列。因此,一条SQL语句可能需要执行多个命令批处理序列,这些批处理序列可以在同一会话中运行。总之,“连接”代表物理通信通道,而“会话”代表逻辑序列,用于向SQL Server发送命令并接收响应。 - Anton
3个回答

18
连接是物理通信渠道,会话是信息交换的状态。一个连接可以有多个会话。
连接是SQL Server和应用程序之间的物理通信渠道:TCP套接字、命名管道、共享内存区域。在SQL Server中,会话对应于维基百科对会话的定义:一个半永久的状态容器,用于信息交换。换句话说,会话存储了诸如登录信息缓存、当前事务隔离级别、会话级SET等设置。

通常每个连接上都有一个会话,但单个连接上可能有多个会话(多活动结果集,MARS),也有没有连接的会话(SSB激活的过程系统会话)。还有一些没有会话的连接,即用于非TDS目的的连接,比如数据库镜像sys.dm_db_mirroring_connections或服务代理连接sys.dm_broker_connections

我从这里得到了答案。

6
你是从这里复制的吗? - Christian.K
是的,我从我在答案中提到的同一个链接中得到了参考。 - Surajit Biswas
那么我如何在单个连接中获得多个会话?select count(*) from sys.dm_exec_connections where session_id = 62结果=3 - Chuck
1
通信渠道中的“物理”究竟是什么?TCP套接字并不是物理的。 - Mehdi Charife

15

与 SQL Server 线程管理和调度相关的常见概念:

Sessions (会话) - 当客户端应用程序连接到 SQL Server 时,双方建立一个“会话”以交换信息。严格来说,会话并不等同于底层物理连接,它是 SQL Server 对连接的逻辑表示。但实际上,您可以将其视为连接(会话 = 连接)。请参阅sys.dm_exec_sessions。这是存在于 SQL Server 2000 及更早版本中的旧SPID。有时您可能会注意到在 DMV 输出中反复出现单个会话。这是由于并行查询。并行查询使用相同的会话与客户端通信,但在 SQL Server 方面,多个工作线程被分配来服务该请求。因此,如果您看到具有相同会话 ID 的多个行,请知道查询请求正在由多个线程服务。

-

连接 - 这是在所有特征 sys.dm_exec_connections 下建立的实际物理连接。 会话和连接之间存在一对一的映射关系。


2

连接是客户端和SQL Server数据库之间的关系

会话是客户端登录(连接到)SQL Server数据库和客户端退出(退出)SQL Server数据库之间的时间段


这个周期或者在这个周期期间发生了什么? - Mehdi Charife
@HeneyEcker.. 当你说“一个客户端”的时候... 这是否意味着其他电脑上的客户端不能使用相同的连接字符串连接到该数据库? - undefined

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