在Sql Server中,连接、会话和请求有什么区别?

4

正如您所知,Sql Server 中有三个概念:连接(connection),会话(session)和请求(request)。

我们可以使用 sys.dm_exec_connections, sys.dm_exec_sessions, sys.dm_exec_requests 系统视图来监视它们。

您能否举例说明它们之间的区别?


1
任务、工作者、线程、调度程序、会话、连接、请求 - 这一切都意味着什么? - Damien_The_Unbeliever
2个回答

4

sys.dm_exec_sessions DMV包括用户会话和用于运行后台任务的内部SQL Server会话。 sys.dm_exec_connections 包含由外部客户端建立的会话的附加信息,包括协议详细信息。 sys.dm_exec_requests 包含有关活动SQL Server请求(例如正在执行的查询)的信息。

运行下面的查询以查看返回的信息。将外连接替换为内连接以更好地查看关系基数。

--all sessions, including SQL Server system sessions
SELECT *
FROM sys.dm_exec_sessions AS s;

--sessions with client connections (including internal SQL Server system sessions that have no connection)
SELECT *
FROM sys.dm_exec_sessions AS s
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id;

--sessions, including request info 
SELECT *
FROM sys.dm_exec_sessions AS s
LEFT JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id
LEFT JOIN sys.dm_exec_requests AS r ON s.session_id = r.session_id
ORDER BY s.session_id;

1

连接是物理通信渠道,会话是信息交换的状态。一个连接可以有多个会话。请求只是向服务器请求任何资源。一旦您和服务器之间建立了会话,就可以请求资源。


嗨 - 关于上面发布的来自微软的文章 - “会话和连接之间存在1:1的映射关系。”。 https://techcommunity.microsoft.com/t5/sql-server-support/tasks-workers-threads-scheduler-sessions-connections-requests/ba-p/333990 - user369142

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