Sessioni degli Eventi estesi

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

Una sessione di eventi estesi viene creata nel processo del motore di database di SQL Server in cui è ospitato il motore degli Eventi estesi. Gli aspetti seguenti di una sessione degli eventi estesi forniscono un contesto per la comprensione dell'infrastruttura degli eventi estesi e dell'elaborazione che si verifica:

  • Stati della sessione. Vari stati in cui si trova una sessione degli eventi estesi quando sono eseguite le istruzioni CREATE EVENT SESSION e ALTER EVENT SESSION.

  • Contenuto e caratteristiche della sessione. Contenuto di una sessione degli eventi estesi, ad esempio destinazioni ed eventi, e il modo in cui questi oggetti sono correlati in una sessione oggetti o tra le sessioni.

Stati sessione

Nella figura seguente sono mostrati i vari stati di una sessione degli eventi estesi.

Diagram showing Extended Events session state.

Con riferimento alla figura precedente, si osservi come lo stato della sessione cambi man mano che vengono inviati i vari comandi Data Definition Language (DDL) per una sessione dell'evento. Tali cambiamenti di stato sono descritti nella tabella seguente.

Etichetta di illustrazione Istruzione DDL Descrizione
Crea CREATE EVENT SESSION Il processo host consente di creare un oggetto di sessione contenente i metadati forniti da CREATE EVENT SESSION. Il processo host convalida la definizione di sessione, convalida il livello di autorizzazione dell'utente e archivia i metadati nel database master. A questo punto, la sessione non è attiva.
Alter ALTER EVENT SESSION, STATE=START Il processo host avvia la sessione. Il processo host legge i metadati archiviati, convalida la definizione di sezione, verifica il livello di autorizzazione dell'utente e crea la sessione. Gli oggetti di sessione, ad esempio eventi e destinazioni, sono caricati e la gestione degli eventi è attiva.
Alter ALTER EVENT SESSION, STATE=STOP Il processo host arresta la sessione attiva ma conserva i metadati.
Drop DROP EVENT SESSION A seconda che la sessione sia attiva o meno, Drop (DROP SESSION) elimina i metadati e chiude la sessione attiva oppure elimina i metadati della sessione.

Contenuto e caratteristiche della sessione

Le sessioni degli Eventi estesi dei limiti impliciti in quanto la configurazione di una sessione non modifica la configurazione di un'altra sessione. Tuttavia, questi limiti non impediscono che un evento o un tipo di destinazione siano utilizzati in più di una sessione.

Nella figura seguente viene illustrato il contenuto di una sessione e la relazione tra pacchetti e sessioni.

Diagram showing object coexistence and sharing in sessions.

Con riferimento all'illustrazione precedente, tenere presente che:

  • Il mapping tra oggetti del pacchetto e le sessioni è molti-a-molti. Ciò significa che un oggetto di un particolare tipo può apparire in più sessioni e una sessione può contenere più oggetti.
  • Lo stesso tipo di evento (Evento 1) o di destinazione (Destinazione 1) può essere usato in più di una sessione.

Le sessioni hanno le seguenti caratteristiche:

  • Azioni e predicati sono associati agli eventi per singola sessione. Se Evento 1 è presente nella sessione A con Azione 1 e predicato Z, ciò non ha alcuna influenza sulla presenza di Evento 1 nella sessione B con Azione 2 e Azione 3 senza predicato.
  • I criteri sono allegati alle sessioni per gestire il buffering e il dispatch e il rilevamento della causalità.

Con buffering si intende come i dati dell'evento sono archiviati mentre è in esecuzione una sessione dell'evento. I criteri di buffering specificano quanta memoria utilizzare per i dati dell'evento e i criteri di perdita per gli eventi. Con dispatch si intende la durata degli eventi temporali che rimangono nei buffer prima di essere inviati alle destinazioni per essere elaborati.

Il rilevamento della causalità monitora il lavoro in più attività. Se il rilevamento della causalità è abilitato, ogni evento generato ha un ID attività univoco in tutto il sistema. L'ID attività è una combinazione di un valore GUID che rimane costante in tutti gli eventi per un'attività e un numero di sequenza che si incrementa ogni volta che viene generato un evento. Quando un'attività fa sì che il lavoro sia svolto da un'altra, l'ID attività padre è inviato all'attività figlio. L'attività figlio restituisce l'ID attività padre la prima volta che genera un evento.