Sammeln von Parameterwerten aus der erweiterten Ereignissitzung

9

Ich verwende erweiterte Ereignisse, um die von unserer Anwendung verwendeten Anweisungen zu verfolgen. Ich habe eine Sitzung erstellt, in der die gewünschten Informationen gesammelt werden, außer dass ich auch die tatsächlichen Werte der verwendeten Parameter wissen möchte .

Ich führe diesen Trace in einer Nicht-Produktionsumgebung durch und jede Leistung, die durch den Trace beeinträchtigt wird, ist akzeptabel.

Alle Abfragen stammen aus dem Ruhezustand und wurden in Form von:

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

Dies ist mein Sitzungsaufbau.

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)

Wie kann ich die tatsächlichen Werte der Parameter erfassen, die in den erfassten Anweisungen verwendet wurden? Ist es möglich?

- Bearbeiten (Problemumgehung): Wenn ich das Ereignis in rpc_completed ändere, erhalte ich den vollständigen SQL-Befehl (einschließlich aller Parameterwerte), der aus dem Ruhezustand aufgerufen wird. In anderen Fällen wäre es immer noch gut zu wissen, wie die Parameterwerte erfasst werden, wenn dies möglich ist.

Peter Henell
quelle
Überprüfen Sie, ob sqlserver.rpc_completed vollständiges T-SQL einschließlich Parameterwerten bereitstellt.
Ivan Stankovic
@IvanStankovic, ja, so musste ich es machen. Wie in der Frage im "Bearbeiten" erwähnt.
Peter Henell

Antworten: