SQL Server中会话和连接的区别

时间:2016-08-29 05:41:33

标签: sql sql-server

对于临时表,我们看到它们是依赖于连接的,我的意思是在一个连接中创建的表仅对该连接可用,并在连接丢失或销毁时自动删除。

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

2 个答案:

答案 0 :(得分:7)

与SQL Server线程管理和日程安排一起使用的常见概念:

  

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

-
  

连接 - 这是在较低协议级别建立的实际物理连接及其所有特征sys.dm_exec_connections。会话和连接之间存在1:1的映射。

答案 1 :(得分:5)

字面意思: Connection is Physical Communication Channel and Session is a state of information exchange. A Connection may have multiple sessions

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

通常每个连接上都有一个会话,但单个连接(Multiple Active Result Sets,MARS)上可能有多个会话,并且有些会话没有连接(SSB activated procedures,{{3} })。还有没有会话的连接,即用于非TDS目的的连接,如数据库镜像system sessions或Service Broker连接sys.dm_db_mirroring_connections

我从sys.dm_broker_connections

获得了参考