Czy oprócz SQL Server Profiler można w jakiś sposób śledzić, które procedury przechowywane są używane, a przynajmniej kiedy były ostatnio wykonywane?
Czy oprócz SQL Server Profiler można w jakiś sposób śledzić, które procedury przechowywane są używane, a przynajmniej kiedy były ostatnio wykonywane?
Odpowiedzi:
Możesz zajrzeć do pamięci podręcznej planu, aby uzyskać całkiem niezły pomysł na użycie procedury składowanej. Weź to zapytanie, na przykład:
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
To da ci usecounts
procedury składowane, które są buforowane dotyczące SomeDB
.
Uwaga: pamięć podręczna planu zawiera plany wykonania. Utrzymanie tych planów wiąże się z wieloma czynnikami. To da ci dobry obraz tego, co jest używane i jak często, ale zdecydowanie nie jest to całkowita liczba przechowywanych procedur i jak często / kiedy były wykonywane.
Możesz na to spojrzeć, ponieważ zawiera informacje last_execution_time
o każdej procedurze przechowywanej.
SELECT DB_NAME(database_id)
,OBJECT_NAME(object_id,database_id)
,cached_time
,last_execution_time
,execution_count
FROM sys.dm_exec_procedure_stats