Ще одне запитання сервера 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: Після того, як у мене є план_ручка, мене цікавить фактичний план. Так я роблю, наприклад:
select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000)
У стовпці query_plan я отримую посилання, яке при натисканні відображає XML-документ. Якщо я збережу його на диску як будь-який файл.sqlplan, я можу двічі клацнути його в Windows, і він відображається правильно у програмі Management Studio. Звичайно, повинен бути спосіб уникнути цього кроку ?!
Питання 3: Чи є спосіб перетворити XML назад у текстовий формат, як за старих часів SET SHOWPLAN_TEXT? Я хочу мати можливість переглядати їх графічно, але й автоматизувати їх різним змістом.
Дякую!
<ShowPlanXML xmlns="http://schemas.microsoft.com...але досі немає способу його відображення безпосередньо - мені потрібно спочатку зберегти його на диску як.sqlplanфайл. Дивно. Дякую Тхо ':)