私の目標は、拡張イベントを使用して単一のストアドプロシージャの実行を追跡することです
イベント選択リストでは、以下を見つけることができます。
sql_statement_completed
sql_batch_completed
sp_statement_completed
rpc_completed
私はどちらを選ぶべきですか?明確な実行回数のみが必要です
ストアドプロシージャ名でフィルタリングされたmodule_start
イベントと、object_nameフィールドに基づいてヒストグラムターゲットバケットを含めます。これにより、ストアドプロシージャが直接または間接的に呼び出される(つまり、他のストアドプロシージャやトリガーと呼ばれる)かどうかに関係なく、ストアドプロシージャが実行されるたびに実行カウントが収集および集計されます。
CREATE EVENT SESSION [module_start_execution_summary] ON SERVER
ADD EVENT sqlserver.module_start(
WHERE ([object_name]=N'YourStoredProcedure'))
ADD TARGET package0.histogram(SET filtering_event_name=N'sqlserver.module_start',source=N'object_name',source_type=(0))
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=ON);
同じストアドプロシージャ名が複数のデータベースまたはスキーマに存在する場合、このメソッドでは異なるプロシージャが1つとしてカウントされることに注意してください。データベースの追加フィルターを使用して、カウントを目的のデータベースのみに制限できます。