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.