SQL Server 2005 Express - Монитор активности - Показать детали пусто, как я могу узнать, что является оператором SQL, который запустил процесс? - PullRequest
1 голос
/ 25 января 2011

Попытка исправить проблему на нашем сервере - очень дорогой запрос использует много нашего ЦП.

Когда я использую монитор активности, иногда вы можете использовать подробности показа для процесса, и он покажет вам sql, который выполняет запрос. Хотя не всегда.

Сейчас я вижу процесс, но как узнать, за какой текст запроса отвечает? Я могу определить источник, если у меня есть sql, но на данный момент у меня ничего нет!

1 Ответ

2 голосов
/ 25 января 2011

Попробуйте использовать следующий запрос.

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

Тогда я могу предложить вам получить копию удивительной sp_WhoIsActive написанной и переданной бесплатно для любезности Адама Маханича. Вы можете использовать эту процедуру, чтобы идентифицировать все выполняющиеся в данный момент запросы, включая множество связанной информации, такой как объем используемого процессора, ввод-вывод, план выполнения, текст запроса, блокировка и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...