Окрім використання Profiler SQL Server, чи є спосіб відстежити, які зберігаються процедури використовуються, або принаймні, коли вони востаннє виконувалися?
Окрім використання Profiler SQL Server, чи є спосіб відстежити, які зберігаються процедури використовуються, або принаймні, коли вони востаннє виконувалися?
Відповіді:
Ви можете подивитися в кеші плану, щоб отримати досить гарне уявлення про використання збереженої процедури. Візьміть, наприклад, цей запит:
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
Це дозволить отримати usecounts
збережену процедуру, в якій зберігається кешування SomeDB
.
Примітка: кеш планів містить плани виконання. У збереженні цих планів пов'язано багато факторів. Оскільки це дасть вам хороше уявлення про те, що використовується і як часто, це точно не загальна кількість збережених процедур, а як часто / коли вони виконувалися.
Ви можете ознайомитись з цим, а також з інформацією last_execution_time
про кожну збережену процедуру.
SELECT DB_NAME(database_id)
,OBJECT_NAME(object_id,database_id)
,cached_time
,last_execution_time
,execution_count
FROM sys.dm_exec_procedure_stats