DBAtlas · 数据库运维图谱

查看活动查询及其开销

SQL Server会话

命令

SELECT r.session_id,
       r.status,
       r.command,
       DB_NAME(r.database_id) AS db,
       r.cpu_time,
       r.total_elapsed_time / 1000 AS elapsed_sec,
       r.reads, r.writes, r.logical_reads,
       r.wait_type,
       SUBSTRING(t.text,
         (r.statement_start_offset/2)+1,
         ((CASE r.statement_end_offset WHEN -1 THEN DATALENGTH(t.text)
            ELSE r.statement_end_offset END - r.statement_start_offset)/2)+1) AS running_statement
FROM   sys.dm_exec_requests r
  JOIN sys.dm_exec_sessions s ON s.session_id = r.session_id
  CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE  s.is_user_process = 1 AND r.session_id <> @@SPID
ORDER BY r.total_elapsed_time DESC;

作用

显示当前正在运行的用户查询及其 CPU、已用时间、读/写次数和准确的语句文本。

适用场景

在实时变慢期间查找哪个查询在消耗资源。

注意

statement_start/end_offset 提取正在执行的准确语句(而不是整个批处理)。仅查询;无风险。

在 DBAtlas 中打开 →

相关内容