SQL Server中会话和连接的区别

Bla*_*Cat 4 sql sql-server

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

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

Moh*_*del 9

与SQL Server线程管理和调度一起使用的常见概念:

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

-
Run Code Online (Sandbox Code Playgroud)

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


小智 6

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

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

通常,每个连接上只有一个会话,但是单个连接上可能有多个会话(多个活动结果集,MARS),并且没有连接的会话(SSB激活过程系统会话)。也有没有会话的连接,即用于非TDS用途的连接,例如数据库镜像sys.dm_db_mirroring_connections或Service Broker连接sys.dm_broker_connections

我从这里得到了参考

  • 你是从 [here](http://dba.stackexchange.com/a/13700/4626) 复制的吗? (2认同)