Oltre a utilizzare SQL Server Profiler, esiste un modo per tenere traccia delle procedure memorizzate utilizzate o almeno quando sono state eseguite l'ultima volta?
Oltre a utilizzare SQL Server Profiler, esiste un modo per tenere traccia delle procedure memorizzate utilizzate o almeno quando sono state eseguite l'ultima volta?
Risposte:
È possibile cercare nella cache del piano per avere una buona idea dell'utilizzo della Stored Procedure. Prendi questa query, ad esempio:
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
Ciò fornirà usecounts
le procedure memorizzate memorizzate nella cache pertinenti SomeDB
.
Nota: la cache del piano contiene i piani di esecuzione. Questa conservazione di questi piani ha molti fattori coinvolti. Considerando che questo ti darà una buona idea di ciò che viene utilizzato e con quale frequenza, sicuramente non è il totale corrente delle stored procedure e con quale frequenza / quando sono state eseguite.
Puoi dare un'occhiata a questo così come contiene informazioni last_execution_time
su ogni procedura memorizzata.
SELECT DB_NAME(database_id)
,OBJECT_NAME(object_id,database_id)
,cached_time
,last_execution_time
,execution_count
FROM sys.dm_exec_procedure_stats