SQL Server 2005 Express - 活动监视器 - 显示详细信息为空,如何判断启动该过程的SQL语句是什么?

时间:2011-01-25 09:59:05

标签: sql-server sql-server-2005

尝试修复我们服务器上的问题 - 一个非常昂贵的查询正在使用我们的很多CPU。

当我使用活动监视器时,有时您可以使用该过程的显示详细信息,它将显示正在运行查询的sql。但并非总是如此。

我现在可以看到这个过程,但是如何判断哪些查询文本负责?如果我有sql,我可以确定来源,但此刻我什么都没有!

1 个答案:

答案 0 :(得分:2)

尝试使用以下查询。

SELECT TOP 20
    qs.sql_handle,
    qs.execution_count,
    qs.total_worker_time AS Total_CPU,
    total_CPU_inSeconds = --Converted from microseconds
        qs.total_worker_time/1000000,
    average_CPU_inSeconds = --Converted from microseconds
        (qs.total_worker_time/1000000) / qs.execution_count,
    qs.total_elapsed_time,
    total_elapsed_time_inSeconds = --Converted from microseconds
        qs.total_elapsed_time/1000000,
   st.text,
   qp.query_plan
FROM
    sys.dm_exec_query_stats AS qs
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
    CROSS apply sys.dm_exec_query_plan (qs.plan_handle) AS qp
ORDER BY qs.total_worker_time DESC

然后我可以建议你自己获得一份由Adam Machanic免费提供的精彩sp_WhoIsActive存储过程的副本。您可以使用该过程来标识所有当前正在运行的查询,包括大量相关信息,例如CPU使用的数量,IO,执行计划,查询文本,阻止等。