Zbieranie wartości parametrów z sesji zdarzeń rozszerzonych

9

Korzystam z rozszerzonych zdarzeń do śledzenia instrukcji używanych przez naszą aplikację. Utworzyłem sesję, która zbierze potrzebne informacje, z tym że chciałbym również poznać rzeczywiste wartości użytych parametrów .

Wykonuję to śledzenie w środowisku nieprodukcyjnym i każda wydajność, której dotyczy śledzenie, jest akceptowalna.

Wszystkie zapytania pochodzą z Hibernacji i zostały sparametryzowane w postaci:

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

To jest moja konfiguracja sesji.

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)

Jak przechwycić rzeczywiste wartości parametrów użytych w przechwyconych instrukcjach? Czy to możliwe?

- Edycja (obejście): Zmiana zdarzenia na rpc_completed daje mi pełną komendę SQL (łącznie ze wszystkimi wartościami parametrów) wywołaną z Hibernacji. W innych przypadkach dobrze byłoby wiedzieć, jak uchwycić wartości parametrów, jeśli jest to możliwe.

Peter Henell
źródło
Sprawdź, czy narzędzie sqlserver.rpc_completed zapewnia pełny T-SQL, w tym wartości parametrów.
Ivan Stankovic
@IvanStankovic, tak właśnie musiałem to zrobić. Jak wspomniano w pytaniu w „Edycji”.
Peter Henell,

Odpowiedzi: