Member 10033441 Ответов: 1

Как узнать длительные запросы внутри хранимой процедуры в SQL server


How do i know the long running queries inside a stored procedure in sql server


Что я уже пробовал:

Я попробовал следующий запрос, но он показывает все длительные запросы в базе данных.Но мне нужны только длительные quries внутри хранимой процедуры.

Выберите Санкт.текст,
Qп.query_plan,
СМО.*
ОТ (
ВЫБЕРИТЕ ТОП-50 *
Из представления sys.dm_exec_query_stats
Заказ по total_worker_time алфавиту
) Как qs
Крест применить к таблице sys.dm_exec_sql_text, передав ей(СМО.sql_handle используется), а ст
Перекрестное применение sys.dm_exec_query_plan(qs. plan_handle) в качестве qp
Где QS.max_worker_time &ГТ; 300
Или QS.max_elapsed_time &ГТ; 300

Daniel Jones

взгляните на эти ссылки
https://www.simple-talk.com/sql/performance/which-of-your-stored-procedures-are-using-the-most-resources/
http://blog.sqlauthority.com/2009/01/02/sql-server-2008-2005-find-longest-running-query-tsql/

1 Ответов

Рейтинг:
2

Kuthuparakkal

Попробуйте этот способ:

SELECT st.text,
qp.query_plan,
qs.*
FROM (
SELECT TOP 50 *
FROM sys.dm_exec_procedure_stats
ORDER BY total_worker_time DESC
) 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
WHERE qs.max_worker_time > 300
OR qs.max_elapsed_time > 300