SQL Server中的连接,会话和请求有什么区别



您知道SQL Server中有三个概念:连接,会话和请求。

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

您可以用样本解释它们之间的区别吗?

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;

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

最新更新