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