使用 DMV 监控连接、会话和请求

适用于:✅ Microsoft Fabric 中的 SQL 分析终结点和仓库

使用现有的动态管理视图(DMV)监视Microsoft Fabric中的连接、会话和请求状态。 有关执行 T-SQL 查询的工具和方法的详细信息,请参阅 查询仓库

本教程介绍如何使用动态管理视图(DMV)监视正在运行的 SQL 查询。

如何使用查询生命周期动态管理视图 (DMV) 监视连接、会话和请求

三个 DMV 提供实时 SQL 查询生命周期见解:

这些 DMV 共同帮助你回答以下问题:

  • 谁正在运行会话?
  • 会话何时启动?
  • 连接到仓库的连接 ID 和正在运行该请求的会话 ID 是什么?
  • 有多少个查询正在运行?
  • 哪些查询的运行时间较长?

先决条件

  • 具有活动Fabric容量的工作区。
  • 现有的仓库或 SQL 分析端点。
  • T-SQL 查询工具,如 SQL 查询编辑器或SQL Server Management Studio(SSMS)。
  • 查询 DMV 和管理会话的权限。

查询 DMV 及管理会话所需的权限

  • 工作区管理员可以执行所有三个 DMV(sys.dm_exec_connectionssys.dm_exec_sessionssys.dm_exec_requests),并查看工作区中所有用户的会话、连接和请求信息。
  • 工作区成员贡献者查看者可以执行sys.dm_exec_sessionssys.dm_exec_requests,且只能查看仓库中其自己的会话和请求。 这些角色无法执行 sys.dm_exec_connections
  • 只有工作区 管理员可以 运行 KILL 命令来停止会话。

查找数据仓库连接和会话

联接 sys.dm_exec_connectionssys.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;

识别并终止长时间运行的查询

使用以下步骤在仓库中查找长时间运行的查询、标识启动查询的用户,如果需要,请停止运行该查询的会话。

  1. 列出活动仓库请求,按每个请求到达后运行的时间排序:

    SELECT request_id, session_id, start_time, total_elapsed_time
    FROM sys.dm_exec_requests
    WHERE status = 'running'
    ORDER BY total_elapsed_time DESC;
    
  2. 查找启动包含长时间运行的查询的会话的用户。 将 <session_id> 替换为上一步中的 session_id 值:

    SELECT login_name
    FROM sys.dm_exec_sessions
    WHERE session_id = <session_id>;
    
  3. 如果需要,请运行带有 session_idKILL 命令来取消并回滚该会话:

    KILL <session_id>;
    

    例如,若要停止会话 101

    KILL 101;
    

有关诊断和解决查询阻止的分步指南,请参阅排查Fabric Data Warehouse中的查询阻塞问题。