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