从SQL Server的活动监视器中记录数据

时间:2014-10-06 11:12:18

标签: sql-server performance

我希望记录SQL Server的“活动监控”面板中显示的数据。 Activity Monitor可以很好地概述当前实例中数据库上发生的情况,因此最好能够在几个小时内记录这些数据,以便能够更详细地分析它。

我特别感兴趣的是“最近昂贵的查询”面板的内容。我知道这些数据来自sys.dm_exec_requests和sys.dm_exec_query_stats,因此编写一个小脚本来定期将这些文件的内容转储到文件中并不困难,但我想知道是否已存在这样做。

我们正在使用:SQL Server 2008 R2

1 个答案:

答案 0 :(得分:1)

您可以使用SQL事件探查器获取该屏幕中使用的所有查询和存储过程。但是,我用这个:

SELECT TOP 10
    qs.execution_count,
    qs.total_logical_reads, qs.last_logical_reads,
    qs.total_logical_writes, qs.last_logical_writes,
    qs.total_worker_time, 
    qs.last_worker_time,
    qs.total_elapsed_time/1000000 total_elapsed_time_in_S,
    qs.last_elapsed_time/1000000 last_elapsed_time_in_S,
    qs.last_execution_time,
    SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,
    ((CASE qs.statement_end_offset
        WHEN -1 THEN DATALENGTH(qt.TEXT)
        ELSE qs.statement_end_offset
        END - qs.statement_start_offset)/2)+1) Query
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
ORDER BY qs.{What to sort on} DESC