Stored-Procedures

擴展事件中跟踪儲存過程執行的正確事件是什麼?

  • June 10, 2019

我的目標是使用擴展事件跟踪單個儲存過程的執行

在事件選擇列表中,我可以找到以下內容:

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);

請注意,如果相同的儲存過程名稱存在於多個數據庫或模式中,則使用此方法將不同的 proc 計為一個。數據庫上的附加過濾器可用於將計數限制為僅所需的數據庫。

引用自:https://dba.stackexchange.com/questions/240184