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

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

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

如何使用查询生命周期 DMV 监视连接、会话和请求

对于当前版本,提供了三个动态管理视图(DMV),用于接收实时 SQL 查询生命周期见解。

这三个 DMV 提供有关以下场景的详细见解:

  • 运行会话的用户是谁?
  • 用户什么时候启动会话?
  • 连接到数据仓库和运行请求的会话的 ID 是什么?
  • 有多少查询正在主动运行?
  • 哪些查询长时间运行?

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

示例 DMV 查询

以下示例查询sys.dm_exec_sessions以查找当前正在执行的所有会话。

SELECT * 
FROM sys.dm_exec_sessions;

查找连接与会话之间的关系

以下示例将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;

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

第一个查询识别长时间运行的查询的列表,按查询到达以来花费时间最长的顺序排列。

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_sessionssys.dm_exec_requests并查看自己的结果,但无权执行sys.dm_exec_connections
  • 只有管理员才有权运行KILL命令。