Une autre question du serveur SQL: j'ai une requête simple qui me donne le SQL le plus gourmand en CPU depuis la réinitialisation des compteurs:
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
Question 1: Quel est exactement le plan_handle
? Cela ne semble pas être un hachage du plan, comme c'est le cas dans Oracle. Je pose la question parce que je veux pouvoir détecter la situation dans laquelle le plan d'une déclaration a changé.
Question 2: Une fois que j'ai un plan_handle, je suis intéressé par le plan réel. Je fais donc, par exemple:
select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000)
Dans la colonne query_plan, j'obtiens un lien qui, lorsque je clique, affiche un document XML. Si je l'enregistre sur le disque en tant que quelque chose.sqlplan, je peux double-cliquer dessus dans Windows et il s'affiche correctement dans Management Studio. Il doit sûrement y avoir un moyen d'éviter cette étape?!
Question 3: Existe-t-il un moyen de reconvertir le XML dans un format textuel, comme dans l'ancien temps de SET SHOWPLAN_TEXT? Je veux pouvoir les visualiser graphiquement, mais aussi les automatiser de manière significative.
Merci!
<ShowPlanXML xmlns="http://schemas.microsoft.com...
mais il n'y a toujours aucun moyen de l'afficher directement - je dois d'abord l'enregistrer sur le disque en tant que.sqlplan
fichier. Bizarre. Merci tho ':)