Kolejne pytanie dotyczące serwera SQL: mam proste zapytanie, które daje mi najbardziej obciążający procesor SQL od czasu zresetowania liczników:
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
Pytanie 1: Czym dokładnie jest plan_handle
? Nie wydaje się to być skrótem planu, tak jak w Oracle. Pytam, bo chcę być w stanie wykryć sytuację, w której zmienia się plan wyciągu.
Pytanie 2: Gdy mam już plan_handle, interesuje mnie faktyczny plan. Tak więc na przykład:
select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000)
W kolumnie query_plan otrzymuję link, który po kliknięciu wyświetla dokument XML. Jeśli zapiszę go na dysku jako cokolwiek.sqlplan, mogę go dwukrotnie kliknąć w systemie Windows i wyświetla się poprawnie w Management Studio. Z pewnością musi istnieć sposób na uniknięcie tego kroku ?!
Pytanie 3: Czy istnieje sposób na konwersję XML z powrotem do formatu tekstowego, jak w dawnych czasach SET SHOWPLAN_TEXT? Chcę móc je wyświetlać graficznie, ale także automatyzować różnicowanie ich w znaczący sposób.
Dzięki!
źródło
<ShowPlanXML xmlns="http://schemas.microsoft.com...
ale nadal nie ma możliwości wyświetlenia go bezpośrednio -.sqlplan
najpierw muszę zapisać go na dysku jako plik. Dziwne. Dzięki tho :)