使用 DMV 监视连接、会话和请求
适用于:✅SQL 分析终结点和 Microsoft Fabric 中的仓库
可以使用现有的动态管理视图(DMV)监视 Microsoft Fabric 中的连接、会话和请求状态。 有关执行 T-SQL 查询的工具和方法的详细信息,请参阅 查询仓库。
如何使用查询生命周期 DMV 监视连接、会话和请求
对于当前版本,提供了三个动态管理视图(DMV),用于接收实时 SQL 查询生命周期见解。
- sys.dm_exec_connections
- 返回有关在仓库和引擎之间建立的每个连接的信息。
- sys.dm_exec_sessions
- 返回有关在项和引擎之间经过身份验证的每个会话的信息。
- sys.dm_exec_requests
- 返回有关会话中每个活动请求的信息。
这三个 DMV 提供有关以下场景的详细见解:
- 运行会话的用户是谁?
- 用户什么时候启动会话?
- 连接到数据仓库和运行请求的会话的 ID 是什么?
- 有多少查询正在主动运行?
- 哪些查询长时间运行?
在本教程中,了解如何使用动态管理视图(DMV)监视正在运行的 SQL 查询。
示例 DMV 查询
以下示例查询sys.dm_exec_sessions
以查找当前正在执行的所有会话。
SELECT *
FROM sys.dm_exec_sessions;
查找连接与会话之间的关系
以下示例将sys.dm_exec_connections
和sys.dm_exec_sessions
联接到特定连接中活动会话之间的关系。
SELECT connections.connection_id,
connections.connect_time,
sessions.session_id, sessions.login_name, sessions.login_time, sessions.status
FROM sys.dm_exec_connections AS connections
INNER JOIN sys.dm_exec_sessions AS sessions
ON connections.session_id=sessions.session_id;
识别并终止长时间运行的查询
第一个查询识别长时间运行的查询的列表,按查询到达以来花费时间最长的顺序排列。
SELECT request_id, session_id, start_time, total_elapsed_time
FROM sys.dm_exec_requests
WHERE status = 'running'
ORDER BY total_elapsed_time DESC;
第二个查询显示哪个用户运行了具有长时间运行的查询的会话。
SELECT login_name
FROM sys.dm_exec_sessions
WHERE 'session_id' = 'SESSION_ID WITH LONG-RUNNING QUERY';
第三个查询演示了如何对具有长时间运行的查询的session_id
使用 KILL 命令。
KILL 'SESSION_ID WITH LONG-RUNNING QUERY'
例如
KILL '101'
权限
- 管理员有权执行所有三个 DMV (
sys.dm_exec_connections
,sys.dm_exec_sessions
,sys.dm_exec_requests
),以查看工作区中自己和其他人的信息。 - 成员、参与者和查看者可以在仓库中执行
sys.dm_exec_sessions
和sys.dm_exec_requests
并查看自己的结果,但无权执行sys.dm_exec_connections
。 - 只有管理员才有权运行
KILL
命令。