Estoy usando eventos extendidos para rastrear las declaraciones utilizadas por nuestra aplicación. He creado una sesión que recopilará la información que deseo, excepto que también me gustaría conocer los valores reales de los parámetros que se utilizaron .
Estoy realizando este seguimiento en un entorno que no es de producción y cualquier rendimiento afectado por el seguimiento es aceptable.
Todas las consultas se originan en Hibernate y se han parametrizado en forma de:
SELECT a, b, c From Customer where CustomerId = @P0
Esta es la configuración de mi sesión.
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)
¿Cómo puedo capturar los valores reales de los parámetros que se usaron en las declaraciones capturadas? ¿Es posible?
- Editar (solución alternativa): cambiar el evento a rpc_completed me da el comando sql completo (incluidos todos los valores de parámetros) llamado desde Hibernate. Para otros casos, aún sería bueno saber cómo capturar los valores de los parámetros, si es posible.