Сбор значений параметров из расширенного сеанса событий

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 дает мне полную команду sql (включая все значения параметров), вызываемую из Hibernate. Для других случаев было бы полезно знать, как фиксировать значения параметров, если это возможно.

Питер Хенелл
источник
Проверьте, предоставляет ли sqlserver.rpc_completed полный T-SQL, включая значения параметров.
Иван Станкович
@IvanStankovic, да, я так и сделал. Как уже упоминалось в вопросе в разделе «Редактировать».
Питер Хенелл

Ответы: