Другой вопрос о сервере SQL: у меня есть простой запрос, который дает мне наиболее интенсивно использующий процессор SQL, так как счетчики были сброшены:
select top 10
sum(qs.total_worker_time) as total_cpu_time,
sum(qs.execution_count) as total_execution_count,
qs.plan_handle, st.text
from
sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.plan_handle) as st
group by qs.plan_handle, st.text
order by sum(qs.total_worker_time) desc
Вопрос 1: Что именно plan_handle
? Похоже, это не хэш плана, как в Oracle. Я спрашиваю, потому что я хочу быть в состоянии обнаружить ситуацию, в которой изменяется план заявления.
Вопрос 2: Как только у меня есть plan_handle, меня интересует фактический план. Так я делаю, например:
select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000)
В столбце query_plan я получаю ссылку, которая при нажатии отображает документ XML. Если я сохраню его на диске как what.sqlplan, я могу дважды щелкнуть по нему в Windows, и он правильно отобразится в Management Studio. Наверняка должен быть способ избежать этого шага ?!
Вопрос 3: Есть ли способ конвертировать XML обратно в текстовый формат, как в старые времена SET SHOWPLAN_TEXT? Я хочу иметь возможность просматривать их графически, а также автоматизировать их отображение каким-либо значимым способом.
Спасибо!
<ShowPlanXML xmlns="http://schemas.microsoft.com...
но до сих пор нет способа отобразить его напрямую - мне нужно.sqlplan
сначала сохранить его на диск в виде файла. Weird. Спасибо, что :)