Otra pregunta del servidor SQL: tengo una consulta simple que me da el SQL más intensivo de CPU desde que se restablecieron los contadores:
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
Pregunta 1: ¿Qué es exactamente el plan_handle
? No parece ser un hash del plan, como lo es en Oracle. Pregunto porque quiero poder detectar la situación en la que el plan de una declaración tiene cambios.
Pregunta 2: Una vez que tengo un plan_handle, estoy interesado en el plan real. Así lo hago, por ejemplo:
select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000)
En la columna query_plan obtengo un enlace que cuando hago clic muestra un documento XML. Si lo guardo en el disco como whatever.sqlplan, puedo hacer doble clic en Windows y se muestra correctamente en Management Studio. ¿Seguramente debe haber una manera de evitar este paso?
Pregunta 3: ¿Hay alguna forma de volver a convertir el XML a un formato de texto, como en los viejos tiempos de SET SHOWPLAN_TEXT? Quiero poder verlos gráficamente, pero también automatizar la diferenciación de alguna manera significativa.
¡Gracias!
<ShowPlanXML xmlns="http://schemas.microsoft.com...
pero todavía no hay forma de mostrarlo directamente;.sqlplan
primero necesito guardarlo en el disco como un archivo. Extraño. Gracias ':)