连接和会话之间有什么区别以及它们之间的关系是什么?

#1 楼

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

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

评论


(令人震惊的噪音)当您意识到SSMS正在使用MARS并因此在每个打开的文件选项卡上使用不同的会话时,这就是为什么#temp表无法删除或在不同的打开文件的选项卡中选择它们的原因,因为它们是会话范围的。

–有趣的名称-这里
17年2月15日在17:02

@GibralterTop:SSMS为每个选项卡使用不同的会话,但是什么使您认为它正在使用MARS?

–拉兹万·索科尔(Razvan Socol)
20年3月23日6:00

#2 楼


连接表示通过网络或通过共享内存在本地与服务器的连接。
会话表示SQL Server中的用户进程。
连接可以链接零个或多个会话。


#3 楼

您可以查询sys.dm_exec_sessions动态管理视图,以了解有关在SQL Server 2012实例上启用了通用条件合规性后登录成功和失败的信息。

sys.dm_exec_connections动态管理视图提供有关连接的信息。建立到数据库引擎实例。如果在SQL Server 2012实例上启用了通用标准合规性,则无法在此动态管理视图中查询有关成功登录和失败登录的信息。