您如何捕获给定存储过程的执行以及传递的参数值?
我尝试使用 sqlserver.module_end 但它只显示没有参数值的存储过程执行:
CREATE EVENT SESSION [SP Executions By Name] ON SERVER
ADD EVENT sqlserver.module_end(SET collect_statement=(1)
ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.query_hash_signed,sqlserver.session_id,sqlserver.sql_text,sqlserver.username)
WHERE ([object_type]='P ' AND [sqlserver].[database_name]=N'MyDB' AND [object_name]=N'MyStoredProc'))
ADD TARGET package0.event_file(SET filename=N'Z:\Extended_Events\StoredProcedures_ByNameAndDB.xel',max_file_size=(5),max_rollover_files=(5))
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=OFF)
仅当您的 proc 是批量提交的 oproc 时,这才有可能。如果是这种情况,请使用 rpc_completed 或 sql_batch_completed 并使用 like 谓词进行过滤
嵌套 procs 是不可能的,请参阅参数值。
考虑将参数记录在表格中以进行分析。