Помимо использования SQL Server Profiler, есть ли способ отследить, какие хранимые процедуры используются, или, по крайней мере, когда они выполнялись в последний раз?
Помимо использования SQL Server Profiler, есть ли способ отследить, какие хранимые процедуры используются, или, по крайней мере, когда они выполнялись в последний раз?
Ответы:
Вы можете заглянуть в кэш плана, чтобы получить довольно хорошее представление об использовании хранимых процедур. Возьмите этот запрос, например:
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