it-swarm.com.de

Was ist das richtige Ereignis in Extended Events, um die Ausführung gespeicherter Prozeduren zu verfolgen?

Mein Ziel ist es, die Ausführung einer einzelnen gespeicherten Prozedur mithilfe erweiterter Ereignisse zu verfolgen

In der Ereignisauswahlliste finde ich Folgendes:

sql_statement_completed
sql_batch_completed
sp_statement_completed
rpc_completed

Welches soll ich wählen? Ich brauche nur eine eindeutige Ausführungszahl

3
Aleksey Vitsko

Umfassen die module_start Ereignis gefiltert nach dem Namen der gespeicherten Prozedur und einem Histogramm-Ziel-Bucket basierend auf dem Feld Objektname. Dies erfasst und aggregiert die Ausführungszählungen jedes Mal, wenn die gespeicherte Prozedur ausgeführt wird, unabhängig davon, ob sie direkt oder indirekt aufgerufen wird (d. H. Andere gespeicherte Prozeduren und Trigger genannt).

CREATE EVENT SESSION [module_start_execution_summary] ON SERVER 
ADD EVENT sqlserver.module_start(
    WHERE ([object_name]=N'YourStoredProcedure'))
ADD TARGET package0.histogram(SET filtering_event_name=N'sqlserver.module_start',source=N'object_name',source_type=(0))
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=ON);

Beachten Sie, dass, wenn derselbe Name der gespeicherten Prozedur in mehr als einer Datenbank oder einem Schema vorhanden ist, die verschiedenen Prozesse mit dieser Methode als einer gezählt werden. Ein zusätzlicher Filter in der Datenbank kann verwendet werden, um die Zählung nur auf die gewünschte Datenbank zu beschränken.

8
Dan Guzman