Sql-Server
擴展事件 - 如何擷取給定儲存過程的執行以及傳遞的參數值?
您如何擷取給定儲存過程的執行以及傳遞的參數值?
我嘗試使用 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 是不可能的,請參閱參數值。
考慮將參數記錄在表格中以進行分析。