Coletando valores de parâmetros da sessão de eventos estendidos

9

Estou usando eventos estendidos para rastrear as instruções usadas pelo nosso aplicativo. Criei uma sessão que coletará as informações que desejo, exceto que também gostaria de saber os valores reais dos parâmetros que foram usados .

Estou executando esse rastreamento em um ambiente de não produção e qualquer desempenho atingido pelo rastreamento é aceitável.

Todas as consultas são originárias do Hibernate e foram parametrizadas na forma de:

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

Esta é a minha configuração de sessão.

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)

Como posso capturar os valores reais dos parâmetros que foram usados ​​nas instruções capturadas? É possível?

- Editar (solução alternativa): alterar o evento para rpc_completed fornece o comando sql completo (incluindo todos os valores de parâmetros) chamado do Hibernate. Para outros casos, ainda seria bom saber como capturar os valores dos parâmetros, se possível.

Peter Henell
fonte
Verifique se sqlserver.rpc_completed fornece T-SQL completo, incluindo valores de parâmetros.
Ivan Stankovic 28/07
@IvanStankovic, sim, era assim que eu tinha que fazê-lo. Como mencionado na pergunta no "Editar".
Peter Agell

Respostas: