web-dev-qa-db-ja.com

ストアドプロシージャの使用状況の追跡

SQL Server Profilerを使用する以外に、どのストアドプロシージャが使用されているか、または少なくとも最後に実行されたときを追跡する方法はありますか?

19
DForck42

プランキャッシュを調べて、ストアドプロシージャの使用法についてかなりの知識を得ることができます。たとえば、次のクエリを見てください。

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が得られます。

注:プランキャッシュには実行プランが含まれています。これらの計画の保持には、多くの要因が関係します。これにより、何がどのように使用されているかがよくわかりますが、ストアドプロシージャの現在の合計や、どのくらいの頻度/いつであるかは間違いありません。彼らは処刑された。

プランキャッシュに関するBOLリファレンス

17
Thomas Stringer

これを見ることができ、すべてのストアドプロシージャの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
10
Sai Chaitanya M