从扩展事件会话中收集参数值


9

我正在使用扩展事件来跟踪应用程序使用的语句。我创建了一个会话,该会话将收集所需的信息,但我也想知道所使用的参数实际值

我正在非生产环境中执行此跟踪,因此跟踪所导致的任何性能下降都是可以接受的。

所有查询均源自Hibernate,并已通过以下形式进行了参数化:

SELECT a, b, c From Customer where CustomerId = @P0

这是我的会话设置。

CREATE EVENT SESSION [TracingForStatements] ON SERVER 
ADD EVENT sqlserver.sp_statement_completed ( 
    ACTION (    
        sqlserver.session_id,
        package0.collect_system_time,
        sqlserver.transaction_id,
        package0.event_sequence
    ) 
    WHERE ( 
        sqlserver.database_id=555
    ) 
) 
ADD TARGET package0.ring_buffer(SET max_memory= 128000)
WITH (EVENT_RETENTION_MODE = NO_EVENT_LOSS, 
      MAX_DISPATCH_LATENCY = 1 SECONDS)

如何捕获捕获的语句中使用的参数的实际值?可能吗?

- 编辑(解决方法):将事件更改为rpc_completed会给我从Hibernate调用的完整sql命令(包括所有参数值)。对于其他情况,如果可能的话,最好还是知道如何捕获参数值。


检查sqlserver.rpc_completed是否提供完整的T-SQL,包括参数值。
伊万·斯坦科维奇

@IvanStankovic,是的,我必须这样做。如问题在“编辑”中所述。
彼得·亨内尔

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.