对于临时表,我们看到它们是依赖于连接的,我的意思是在一个连接中创建的表仅对该连接可用,并在连接丢失或销毁时自动删除。
SQL Server中的连接和会话有什么区别?
答案 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
。