Además de usar SQL Server Profiler, ¿hay alguna forma de rastrear qué procedimientos almacenados se están utilizando, o al menos cuándo se ejecutaron por última vez?
Además de usar SQL Server Profiler, ¿hay alguna forma de rastrear qué procedimientos almacenados se están utilizando, o al menos cuándo se ejecutaron por última vez?
Respuestas:
Puede buscar en el caché del plan para tener una idea bastante buena del uso del procedimiento almacenado. Tome esta consulta, por ejemplo:
select
db_name(st.dbid) as database_name,
object_name(st.objectid) as name,
p.size_in_bytes / 1024 as size_in_kb,
p.usecounts,
st.text
from sys.dm_exec_cached_plans p
cross apply sys.dm_exec_sql_text(p.plan_handle) st
where p.objtype = 'proc'
and st.dbid = db_id('SomeDatabase')
order by p.usecounts desc
Esto le proporcionará los usecounts
procedimientos almacenados que se almacenan en caché correspondientes SomeDB
.
Nota: el caché del plan contiene los planes de ejecución. Esta retención de estos planes tiene muchos factores involucrados. Si bien esto le dará una buena idea de lo que se está utilizando y con qué frecuencia, definitivamente no se trata del total acumulado de procedimientos almacenados y con qué frecuencia / cuándo se ejecutaron.
Puede echar un vistazo a esto y también contiene información last_execution_time
de cada procedimiento almacenado.
SELECT DB_NAME(database_id)
,OBJECT_NAME(object_id,database_id)
,cached_time
,last_execution_time
,execution_count
FROM sys.dm_exec_procedure_stats