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.
fonte
Respostas:
Alguém mencionou "Acho que apenas o evento sqlserver.rpc_completed fornecerá um comando SQL completo, incluindo os valores dos parâmetros". Revise a resposta abaixo:
Capturar valores de parâmetros passados em sessões estendidas do Sql Server
fonte