适用于:✅ Microsoft Fabric 中的 SQL 分析终结点和仓库
使用现有的动态管理视图(DMV)监视Microsoft Fabric中的连接、会话和请求状态。 有关执行 T-SQL 查询的工具和方法的详细信息,请参阅 查询仓库。
本教程介绍如何使用动态管理视图(DMV)监视正在运行的 SQL 查询。
如何使用查询生命周期动态管理视图 (DMV) 监视连接、会话和请求
三个 DMV 提供实时 SQL 查询生命周期见解:
- sys.dm_exec_connections 返回有关在仓库和引擎之间建立的每个连接的信息。
- sys.dm_exec_sessions 返回有关在项和引擎之间进行身份验证的每个会话的信息。
- sys.dm_exec_requests 返回有关会话中每个活动请求的信息。
这些 DMV 共同帮助你回答以下问题:
- 谁正在运行会话?
- 会话何时启动?
- 连接到仓库的连接 ID 和正在运行该请求的会话 ID 是什么?
- 有多少个查询正在运行?
- 哪些查询的运行时间较长?
先决条件
- 具有活动Fabric容量的工作区。
- 现有的仓库或 SQL 分析端点。
- T-SQL 查询工具,如 SQL 查询编辑器或SQL Server Management Studio(SSMS)。
- 查询 DMV 和管理会话的权限。
查询 DMV 及管理会话所需的权限
- 工作区管理员可以执行所有三个 DMV(
sys.dm_exec_connections和sys.dm_exec_sessionssys.dm_exec_requests),并查看工作区中所有用户的会话、连接和请求信息。 - 工作区成员、贡献者或查看者可以执行
sys.dm_exec_sessions和sys.dm_exec_requests,且只能查看仓库中其自己的会话和请求。 这些角色无法执行sys.dm_exec_connections。 - 只有工作区 管理员可以 运行
KILL命令来停止会话。
查找数据仓库连接和会话
联接 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;查找启动包含长时间运行的查询的会话的用户。 将
<session_id>替换为上一步中的session_id值:SELECT login_name FROM sys.dm_exec_sessions WHERE session_id = <session_id>;如果需要,请运行带有
session_id的KILL命令来取消并回滚该会话:KILL <session_id>;例如,若要停止会话
101,KILL 101;
有关诊断和解决查询阻止的分步指南,请参阅排查Fabric Data Warehouse中的查询阻塞问题。