Hace un tiempo habia encontrado estas consultas para monitorear el uso de procedimientos almacenados en SQL 2005 y posterior. Los comparto porque siempre es util conocer que tanto y que tan frecuentemente se ejecutan nuestros procedimientos almacenados.
1. [Conteo Total de Ejecuciones]
SELECT Db_name(st.dbid) [Base de Datos], Object_schema_name(st.objectid, dbid) [Schema], Object_name(st.objectid, dbid) [USP], Max(cp.usecounts) [Total Ejecuciones] FROM sys.dm_exec_cached_plans cp CROSS apply sys.Dm_exec_sql_text(cp.plan_handle) st WHERE Db_name(st.dbid) IS NOT NULL AND cp.objtype = 'proc' GROUP BY cp.plan_handle, Db_name(st.dbid), Object_schema_name(objectid, st.dbid), Object_name(objectid, st.dbid) ORDER BY Max(cp.usecounts)
2. [Procedimiento que Consume mas CPU]
SELECT Db_name(st.dbid) [Base de Datos, Object_schema_name(st.objectid, dbid) [Schema], Object_name(st.objectid, dbid) [USP], Max(cp.usecounts) [Total Ejecuciones], Sum(qs.total_worker_time) [Consumo Total CPU], Sum(qs.total_worker_time) / ( Max(cp.usecounts) * 1.0 ) [Consumo Promedio CPU] FROM sys.dm_exec_cached_plans cp INNER JOIN sys.dm_exec_query_stats qs ON cp.plan_handle = qs.plan_handle CROSS apply sys.Dm_exec_sql_text(cp.plan_handle) st WHERE Db_name(st.dbid) IS NOT NULL AND cp.objtype = 'proc' GROUP BY Db_name(st.dbid), Object_schema_name(objectid, st.dbid), Object_name(objectid, st.dbid) ORDER BY Sum(qs.total_worker_time) DESC
3. [Procedimientos con mayor tiempo de ejecucion]
SELECT Db_name(st.dbid) [Base de Datos, Object_schema_name(objectid, st.dbid) [Schema], Object_name(objectid, st.dbid) [USP], Max(cp.usecounts) [Total Ejecuciones], Sum(qs.total_elapsed_time) [Tiempo Total Ejecuciones], Sum(qs.total_elapsed_time) / Max(cp.usecounts) [Tiempo Promedio Ejecuciones] FROM sys.dm_exec_query_stats qs CROSS apply sys.Dm_exec_sql_text(qs.plan_handle) st INNER JOIN sys.dm_exec_cached_plans cp ON qs.plan_handle = cp.plan_handle WHERE Db_name(st.dbid) IS NOT NULL AND cp.objtype = 'proc' GROUP BY Db_name(st.dbid), Object_schema_name(objectid,st.dbid), Object_name(objectid, st.dbid) ORDER BY Sum(qs.total_elapsed_time) DESC
Fuente SQL Journal
y si no tengo el dm_exec_sql_text ??
A que te refieres? Cual version de SQL Server estas usando?
Tenia un poco abandonado el sitio. Si aun tienes la duda, cual es la version de SQL Server que tenes instalada
Si quiero, aplicar el procedimiento que me trae los que tienen mas tiempo de ejecución dentro del rango de una fecha como puedo ejecutarlo?
Es un acumulado, lo que he hecho cuando he tenido que guardarlo es correrlo cada cierto tiempo y respaldarlo en una tabla