我正在使用扩展事件来跟踪应用程序使用的语句。我创建了一个会话,该会话将收集所需的信息,但我也想知道所使用的参数的实际值。
我正在非生产环境中执行此跟踪,因此跟踪所导致的任何性能下降都是可以接受的。
所有查询均源自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,是的,我必须这样做。如问题在“编辑”中所述。
—
彼得·亨内尔