扩展事件中跟踪存储过程执行的正确事件是什么?

Ale*_*sko 6 stored-procedures extended-events sql-server-2017

我的目标是使用扩展事件跟踪单个存储过程的执行

在事件选择列表中,我可以找到以下内容:

sql_statement_completed
sql_batch_completed
sp_statement_completed
rpc_completed
Run Code Online (Sandbox Code Playgroud)

我应该选择哪一个?我只需要一个不同的执行计数

Dan*_*man 11

包括根据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);
Run Code Online (Sandbox Code Playgroud)

请注意,如果相同的存储过程名称存在于多个数据库或模式中,则使用此方法将不同的 proc 计算为一个。数据库上的附加过滤器可用于将计数限制为仅对所需的数据库进行计数。