Gibt es neben der Verwendung von SQL Server Profiler eine Möglichkeit, zu verfolgen, welche gespeicherten Prozeduren verwendet werden oder zumindest, wann sie zuletzt ausgeführt wurden?
Gibt es neben der Verwendung von SQL Server Profiler eine Möglichkeit, zu verfolgen, welche gespeicherten Prozeduren verwendet werden oder zumindest, wann sie zuletzt ausgeführt wurden?
Antworten:
Sie können im Plan-Cache nachsehen, um eine gute Vorstellung von der Verwendung gespeicherter Prozeduren zu erhalten. Nehmen Sie diese Abfrage zum Beispiel:
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
Dadurch erhalten Sie die usecounts
gespeicherten Prozeduren, die im Cache gespeichert sind SomeDB
.
Hinweis: Der Plan-Cache enthält die Ausführungspläne. Diese Beibehaltung dieser Pläne hat viele Faktoren zur Folge. Auf diese Weise erhalten Sie eine gute Vorstellung davon, was und wie oft verwendet wird. Es handelt sich jedoch definitiv nicht um die laufende Summe der gespeicherten Prozeduren und wie oft / wann sie ausgeführt wurden.
Sie können sich dies ansehen, und es enthält Informationen last_execution_time
zu jeder gespeicherten Prozedur.
SELECT DB_NAME(database_id)
,OBJECT_NAME(object_id,database_id)
,cached_time
,last_execution_time
,execution_count
FROM sys.dm_exec_procedure_stats