Guida introduttiva: Eventi estesi

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure

Gli eventi estesi sono una funzionalità leggera di monitoraggio delle prestazioni che consente agli utenti di raccogliere dati per monitorare e risolvere i problemi. Usando gli eventi estesi, è possibile visualizzare i dettagli delle operazioni interne del motore di database rilevanti per il monitoraggio delle prestazioni e la risoluzione dei problemi. Per altre informazioni sugli eventi estesi, vedere Panoramica degli eventi estesi.

Questo articolo ha lo scopo di aiutare gli amministratori, i tecnici e gli sviluppatori SQL che non hanno esperienza con gli eventi estesi e che vogliono iniziare a usarli e visualizzare i dati degli eventi in pochi minuti.

Gli eventi estesi sono noti anche come XEvent e talvolta solo XE.

Dopo aver letto questo articolo, è possibile:

  • Vedere come creare una sessione eventi in SQL Server Management Studio (SSMS), con screenshot di esempio
  • Correlare screenshot alle istruzioni Transact-SQL equivalenti
  • Comprendere in dettaglio i termini e i concetti alla base dell'interfaccia utente di SSMS e delle istruzioni T-SQL XEvents
  • Informazioni su come testare la sessione eventi
  • Comprendere i risultati della sessione, tra cui:
    • Opzioni disponibili per l'archiviazione dei risultati
    • Risultati elaborati e non elaborati
    • Strumenti per visualizzare i risultati in modi diversi e su scale temporali diverse
  • Scopri come cercare e individuare tutti gli eventi disponibili
  • Comprendere le relazioni tra le viste di sistema degli eventi estesi

Suggerimento

Per altre informazioni sugli eventi estesi in database SQL di Azure, inclusi gli esempi di codice, vedere Eventi estesi in database SQL.

Prerequisiti iniziali

Per iniziare, è necessario:

  1. Scaricare SQL Server Management Studio (SSMS). È consigliabile usare una versione recente di SSMS con i miglioramenti e le correzioni più recenti.
  2. Assicurarsi che l'account disponga dell'autorizzazione del ALTER ANY EVENT SESSIONserver.

Le informazioni dettagliate sulla sicurezza e sulle autorizzazioni relative agli eventi estesi sono disponibili alla fine di questo articolo nell'Appendice.

Eventi estesi in SSMS

SSMS fornisce un'interfaccia utente completamente funzionale per gli eventi estesi. Molti scenari possono essere eseguiti usando questa interfaccia utente, senza dover usare T-SQL o viste a gestione dinamica (DMV).

In questa sezione è possibile visualizzare i passaggi dell'interfaccia utente per creare una sessione eventi estesi e visualizzare i dati segnalati. Dopo aver esaminato i passaggi pratici o esaminati in questo articolo, è possibile leggere i concetti coinvolti nei passaggi per una comprensione più approfondita.

Creare una sessione eventi in SSMS

Quando si crea una sessione eventi estesi, si indica al sistema:

  • Eventi a cui si è interessati
  • Come si vuole che il sistema riporti i dati all'utente

La dimostrazione apre la finestra di dialogo Nuova sessione , che mostra come usare le quattro pagine denominate:

  • Generale
  • evento
  • Archiviazione dati
  • Avanzate

Il testo e gli screenshot di supporto possono essere leggermente diversi nella versione di SSMS, ma devono comunque essere rilevanti per la spiegazione dei concetti di base.

  1. Connessione a un'istanza del motore di database. Gli eventi estesi sono supportati a partire da SQL Server 2014, in database SQL di Azure e Istanza gestita di SQL di Azure.

  2. In Esplora oggetti selezionare Gestione > eventi estesi. In database SQL di Azure, le sessioni di eventi sono con ambito database, quindi l'opzione Eventi estesi è disponibile in ogni database, non in Gestione. Fare clic con il pulsante destro del mouse sulla cartella Sessioni e scegliere Nuova sessione. La finestra di dialogo Nuova sessione è preferibile alla Creazione guidata nuova sessione, anche se le due sono simili.

  3. In alto a sinistra selezionare la pagina Generale . Digitare YourSessionquindi , o qualsiasi nome desiderato, nella casella di testo Nome sessione. Non selezionare ancora OK , perché è comunque necessario immettere alcuni dettagli in altre pagine.

    Screenshot of New Session > General > Session name.

  4. In alto a sinistra selezionare la pagina Eventi .

    Screenshot of New Session > Events > Select > Event library, Selected events.

  5. Nell'area Raccolta eventi , nell'elenco a discesa, scegliere Solo nomi eventi.

    • Digitare sql_statement_ nella casella di testo. In questo modo l'elenco viene filtrato in modo da visualizzare solo gli eventi con sql_statement_ nel nome.
    • Scorrere e selezionare l'evento denominato sql_statement_completed.
    • Selezionare il pulsante > freccia destra per spostare l'evento nella casella Eventi selezionati.
  6. Rimanere nella pagina Eventi selezionare il pulsante Configura in alto a destra. Verrà visualizzata la casella Opzioni di configurazione evento per gli eventi selezionati.

    Screenshot of New Session > Events > Configure > Filter (Predicate) > Field.

  7. Selezionare la scheda Filtro (predicato). Selezionare quindi Seleziona qui per aggiungere una clausola. Questo filtro (noto anche come predicato) viene configurato per acquisire tutte le SELECT istruzioni con una HAVING clausola .

  8. Nell'elenco a discesa Campo scegliere sqlserver.sql_text.

    • Per Operatore scegliere like_i_sql_unicode_string. In questo caso, i nel nome dell'operatore significa nsensitive maiuscole/minuscole.
    • In Valore digitare %SELECT%HAVING%. In questo caso, i segni di percentuale sono caratteri jolly in piedi per qualsiasi stringa di caratteri.

    Nota

    Nel nome in due parti del campo sqlserver è il nome del pacchetto e sql_text è il nome del campo. L'evento scelto in precedenza, sql_statement_completed, deve essere nello stesso pacchetto del campo scelto.

  9. In alto a sinistra selezionare la pagina Data Archiviazione.

  10. Nell'area Destinazioni selezionare Seleziona qui per aggiungere una destinazione.

    • Nell'elenco a discesa Tipo scegliere event_file. Ciò significa che i dati dell'evento vengono archiviati in un file che è possibile aprire e visualizzare in un secondo momento. In database SQL di Azure e Istanza gestita di SQL di Azure i dati degli eventi vengono archiviati in BLOB di Archiviazione di Azure.

    Nota

    A partire da SQL Server 2019, è possibile usare Archiviazione BLOB di Azure in una event_file destinazione in SQL Server.

    Screenshot of New Session > Data Storage > Targets > Type > event_file.

  11. Nell'area Proprietà digitare il percorso completo e il nome file nella casella di testo Nome file nel server . È anche possibile usare il pulsante Sfoglia . L'estensione del nome file deve essere xel. Nell'esempio è stato usato C:\Temp\YourSession_Target.xel

    Screenshot of New Session > Advanced > Maximum dispatch latency > OK.

  12. In alto a sinistra selezionare la pagina Avanzate . Ridurre la latenza massima di invio a 3 secondi.

  13. Selezionare il pulsante OK nella parte inferiore per creare questa sessione eventi.

  14. Tornare in Esplora oggetti, aprire o aggiornare la cartella Sessioni e visualizzare il nuovo nodo per YourSession. La sessione non è ancora stata avviata. La si avvia in un secondo momento.

    Screenshot of Node for your new *event session* named YourSession, in the Object Explorer, under Management > Extended Events > Sessions.

Modificare una sessione eventi in SSMS

Nel Esplora oggetti SSMS è possibile modificare la sessione eventi facendo clic con il pulsante destro del mouse sul relativo nodo e quindi scegliendo Proprietà. Viene visualizzata la stessa finestra di dialogo a più pagine.

Creare una sessione eventi con T-SQL

Nell'interfaccia utente degli eventi estesi di SSMS è possibile generare uno script T-SQL per creare la sessione eventi come indicato di seguito:

  • Fare clic con il pulsante destro del mouse sul nodo della sessione eventi e quindi selezionare Crea sessione come > CREA negli > Appunti.
  • Incollare in qualsiasi editor di testo.

Ecco l'istruzione T-SQL generata CREATE EVENT SESSION per YourSession:

CREATE EVENT SESSION [YourSession]
    ON SERVER -- For SQL Server and Azure SQL Managed Instance
    -- ON DATABASE -- For Azure SQL Database
    ADD EVENT sqlserver.sql_statement_completed
    (
        ACTION(sqlserver.sql_text)
        WHERE
        ( [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text], N'%SELECT%HAVING%')
        )
    )
    ADD TARGET package0.event_file
    (SET
        filename = N'C:\Temp\YourSession_Target.xel',
        max_file_size = (2),
        max_rollover_files = (2)
    )
    WITH (
        MAX_MEMORY = 2048 KB,
        EVENT_RETENTION_MODE = ALLOW_MULTIPLE_EVENT_LOSS,
        MAX_DISPATCH_LATENCY = 3 SECONDS,
        MAX_EVENT_SIZE = 0 KB,
        MEMORY_PARTITION_MODE = NONE,
        TRACK_CAUSALITY = OFF,
        STARTUP_STATE = OFF
    );
GO

DROP condizionale della sessione eventi

Prima dell'istruzione CREATE EVENT SESSION , è possibile eseguire un'istruzione DROP EVENT SESSION in modo condizionale, nel caso in cui esista già una sessione con lo stesso nome. In questo modo viene eliminata la sessione esistente. Senza questo, il tentativo di creare una sessione con lo stesso nome causa un errore.

IF EXISTS (SELECT *
      FROM sys.server_event_sessions
      WHERE name = 'YourSession')
BEGIN
    DROP EVENT SESSION YourSession
          ON SERVER;
END
GO

Avviare e arrestare la sessione eventi con T-SQL

Quando si crea una sessione eventi, il valore predefinito è l'avvio non automatico. È possibile avviare o arrestare la sessione eventi in qualsiasi momento usando l'istruzione T-SQL seguente ALTER EVENT SESSION .

ALTER EVENT SESSION [YourSession]
      ON SERVER
    STATE = START; -- STOP;

È possibile configurare la sessione eventi per l'avvio automatico all'avvio dell'istanza del motore di database. Vedere la STARTUP STATE = ON parola chiave in CREATE EVENT SESSION.

L'interfaccia utente di SSMS offre una casella di controllo corrispondente, Avvia la sessione eventi all'avvio del server, nella pagina Nuovo generale sessione>.

Testare una sessione eventi

Testare la sessione eventi con questi passaggi:

  1. In Esplora oggetti fare clic con il pulsante destro del mouse sul nodo della sessione eventi e quindi scegliere Avvia sessione.
  2. Durante la connessione allo stesso server (o allo stesso database in database SQL di Azure) in cui è stata creata la sessione eventi, eseguire l'istruzione seguente SELECT...HAVING un paio di volte. È consigliabile modificare il valore nella HAVING clausola per ogni esecuzione, passando da 2 a 3. Ciò consente di visualizzare le differenze nei risultati.
  3. Fare clic con il pulsante destro del mouse sul nodo della sessione e scegliere Arresta sessione.
  4. Leggere la sottosezione successiva su come SELEZIONARE e visualizzare i risultati.
SELECT
        c.name,
        Count(*)  AS [Count-Per-Column-Repeated-Name]
    FROM
             sys.syscolumns  AS c
        JOIN sys.sysobjects  AS o
            ON o.id = c.id
    WHERE
        o.type = 'V'
        AND
        c.name like '%event%'
    GROUP BY
        c.name
    HAVING
        Count(*) >= 3   --2     -- Try both values during session.
    ORDER BY
        c.name;

Per completezza, di seguito è riportato l'output di esempio dell'oggetto precedente SELECT...HAVING.

/* Approximate output, 6 rows, all HAVING Count >= 3:
name                   Count-Per-Column-Repeated-Name
---------------------  ------------------------------
event_group_type       4
event_group_type_desc  4
event_session_address  5
event_session_id       5
is_trigger_event       4
trace_event_id         3
*/

Visualizzare i dati della sessione eventi come XML

In una finestra di query in SSMS eseguire l'istruzione seguente SELECT per visualizzare i dati dell'evento acquisiti dalla sessione. Ogni riga rappresenta un'occorrenza di evento. Modifica CAST(... AS xml) il tipo di dati della colonna da nvarchar a xml. In questo modo è possibile selezionare il valore della colonna per aprirlo in una nuova finestra per facilitare la lettura.

Nota

La event_file destinazione inserisce sempre una parte numerica nel nome del xel file. Prima di poter eseguire la query seguente, è necessario copiare il nome completo effettivo del xel file che include questa parte numerica e incollarlo nell'istruzione SELECT . Nell'esempio seguente la parte numerica è _0_131085363367310000.

SELECT
        object_name,
        file_name,
        file_offset,
        event_data,
        'CLICK_NEXT_CELL_TO_BROWSE_XML RESULTS!'
                AS [CLICK_NEXT_CELL_TO_BROWSE_XML_RESULTS],
        CAST(event_data AS xml) AS [event_data_XML]
                -- TODO: In the SSMS results grid, click this XML cell
    FROM
        sys.fn_xe_file_target_read_file(
            'C:\Temp\YourSession_Target_0_131085363367310000.xel',
            null, null, null
        );

Questa query offre due modi per visualizzare i risultati completi di una determinata riga di evento:

  • Eseguire il edizione Standard LECT in SSMS e quindi selezionare una cella nella event_data_XML colonna.

  • Copiare la stringa XML da una cella nella event_data colonna. Incollare in qualsiasi editor di testo come Blocco note e salvare il file con estensione xml. Aprire quindi il file in un browser o in un editor in grado di visualizzare i dati XML.

Dati dell'evento in XML

Ora verrà esaminata una parte dei risultati, che sono in formato XML. Il codice XML qui viene modificato per brevità. <data name="row_count"> visualizza il valore 6, che corrisponde alle sei righe dei risultati visualizzate in precedenza. E possiamo vedere l'intera SELECT affermazione.

<event name="sql_statement_completed" package="sqlserver" timestamp="2016-05-24T04:06:08.997Z">
  <data name="duration">
    <value>111021</value>
  </data>
  <data name="cpu_time">
    <value>109000</value>
  </data>
  <data name="physical_reads">
    <value>0</value>
  </data>
  <data name="last_row_count">
    <value>6</value>
  </data>
  <data name="offset">
    <value>0</value>
  </data>
  <data name="offset_end">
    <value>584</value>
  </data>
  <data name="statement">
    <value>SELECT
        c.name,
        Count(*)  AS [Count-Per-Column-Repeated-Name]
    FROM
             sys.syscolumns  AS c
        JOIN sys.sysobjects  AS o

            ON o.id = c.id
    WHERE
        o.type = 'V'
        AND
        c.name like '%event%'
    GROUP BY
        c.name
    HAVING
        Count(*) &gt;= 3   --2     -- Try both values during session.
    ORDER BY
        c.name</value>
  </data>
</event>

Visualizzare i dati della sessione eventi in SSMS

Nell'interfaccia utente di SSMS sono disponibili diverse funzionalità avanzate che è possibile usare per visualizzare i dati acquisiti da una sessione eventi. Per altre informazioni, vedere Visualizzare i dati degli eventi in SQL Server Management Studio.

Si inizia con le opzioni del menu di scelta rapida con l'etichetta Visualizza dati di destinazione e Controlla dati live.

Visualizzare i dati di destinazione

Nella Esplora oggetti SSMS è possibile fare clic con il pulsante destro del mouse sul nodo di destinazione che si trova nel nodo della sessione eventi. Nel menu di scelta rapida selezionare Visualizza dati di destinazione. SSMS visualizza i dati.

La visualizzazione non viene aggiornata man mano che si verificano nuovi eventi in una sessione. È tuttavia possibile selezionare di nuovo Visualizza dati di destinazione.

Screenshot of View Target Data, in SSMS, Management > Extended Events > Sessions > YourSession > package0.event_file, right-click.

Guarda i dati in tempo reale

In Esplora oggettidi SSMS è possibile fare clic con il pulsante destro del mouse sul nodo della sessione eventi. Nel menu di scelta rapida selezionare Watch Live Data (Controlla dati in tempo reale). SSMS visualizza i dati in ingresso man mano che continuano ad arrivare in tempo reale.

Screenshot of Watch Live Data, in SSMS, Management > Extended Events > Sessions > YourSession, right-click.

Termini e concetti negli eventi estesi

La tabella seguente elenca i termini usati per gli eventi estesi e ne descrive i significati.

Termine Descrizione
event session Un costrutto incentrato su uno o più eventi, oltre a elementi di supporto quali azioni e destinazioni. L'istruzione CREATE EVENT SESSION crea ogni sessione evento. È possibile ALTER avviare e arrestare una sessione eventi.

Una sessione eventi viene a volte indicata semplicemente come sessione, quando il dal contesto si evince che indica la sessione eventi.

Altre informazioni sulle sessioni di eventi sono descritte in: Sessioni di eventi estesi.
event Un'occorrenza specifica del sistema che viene controllata da una sessione eventi attiva.

Ad esempio, l'evento sql_statement_completed rappresenta il momento in cui viene completata un'istruzione T-SQL specificata. L'evento può segnalare la durata e altri dati.
target Elemento che riceve i dati di output da un evento acquisito. La destinazione visualizza i dati all'utente.

Gli esempi includono la event_file destinazione usata in precedenza in questa guida introduttiva e la ring_buffer destinazione che mantiene gli eventi più recenti in memoria.

Qualsiasi tipo di destinazione può essere usato per qualsiasi sessione di eventi. Per informazioni dettagliate, vedere Destinazioni per gli eventi estesi.
action Un campo noto all'evento. I dati del campo vengono inviati alla destinazione. Il campo azione è strettamente correlato al filtro predicato.
predicate, o filtrare Test di dati in un campo evento, usato in modo che solo un subset interessante di occorrenze dell'evento venga inviato alla destinazione.

Ad esempio, un filtro può includere solo le sql_statement_completed occorrenze degli eventi in cui l'istruzione T-SQL conteneva la stringa HAVING.
package Un qualificatore del nome associato a ogni elemento in un set di elementi incentrato su un core di eventi.

Ad esempio, un pacchetto può avere eventi relativi al testo T-SQL. Un evento può riguardare tutto il T-SQL in un batch. un evento più circoscritto potrebbe riguardare le singole istruzioni T-SQL. Inoltre, per qualsiasi istruzione T-SQL, sono started presenti eventi e completed .

Anche i campi appropriati per gli eventi sono inclusi nel pacchetto con gli eventi. La maggior parte delle destinazioni si trova in package0 e viene usata con gli eventi di molti altri pacchetti.

Scenari di eventi estesi e dettagli di utilizzo

Esistono numerosi scenari per l'uso di eventi estesi per monitorare e risolvere i problemi relativi al motore di database e ai carichi di lavoro di query. Gli articoli seguenti forniscono esempi che usano scenari correlati al blocco:

Come individuare gli eventi disponibili nei pacchetti

La query seguente restituisce una riga per ogni evento disponibile il cui nome contiene la stringa sqldi tre caratteri . È possibile modificare la LIKE clausola per cercare nomi di eventi diversi. Il set di risultati identifica anche il pacchetto che contiene l'evento.

SELECT -- Find an event you want.
    p.name AS [Package-Name],
    o.object_type,
    o.name AS [Object-Name],
    o.description AS [Object-Descr],
    p.guid AS [Package-Guid]
FROM sys.dm_xe_packages AS p
INNER JOIN sys.dm_xe_objects AS o
    ON p.guid = o.package_guid
WHERE o.object_type = 'event' --'action'  --'target'
    AND p.name LIKE '%'
    AND o.name LIKE '%sql%'
ORDER BY p.name,
    o.object_type,
    o.name;

Nell'esempio di risultato seguente viene illustrata la riga restituita, con pivot qui nel formato .column name = value I dati provengono dall'evento sql_statement_completed usato nei passaggi di esempio precedenti. La descrizione dell'oggetto (un evento, in questo esempio) funge da stringa di documentazione.

Package-Name = sqlserver
object_type  = event
Object-Name  = sql_statement_completed
Object-Descr = Occurs when a Transact-SQL statement has completed.
Package-Guid = 655FD93F-3364-40D5-B2BA-330F7FFB6491

Trovare eventi usando l'interfaccia utente di SSMS

Un'altra opzione per trovare gli eventi in base al nome consiste nell'usare la finestra di dialogo Nuova libreria eventi eventi > sessione > visualizzata in uno screenshot precedente. È possibile digitare un nome di evento parziale e trovare tutti i nomi degli eventi corrispondenti.

Classi di evento di Traccia SQL

Una descrizione dell'uso di eventi estesi con classi di evento e colonne di Traccia SQL è disponibile in: Visualizzare gli eventi estesi equivalenti alle classi di evento di traccia SQL.

Event Tracing for Windows (ETW)

Le descrizioni dell'uso degli eventi estesi con Event Tracing for Windows (ETW) sono disponibili in:

Sessioni di eventi di sistema

In SQL Server e Istanza gestita di SQL di Azure vengono create diverse sessioni di eventi di sistema per impostazione predefinita e configurate per l'avvio al momento dell'avvio del motore di database. Analogamente alla maggior parte delle sessioni di eventi, usano una piccola quantità di risorse e non influiscono materialmente sulle prestazioni del carico di lavoro. Microsoft consiglia che queste sessioni rimangano abilitate e in esecuzione. Le sessioni di integrità, in particolare la sessione di system_health , sono spesso utili per il monitoraggio e la risoluzione dei problemi.

È possibile visualizzare queste sessioni di eventi nel Esplora oggetti di SSMS in Sessioni eventi > estesi di gestione>. In SQL Server, ad esempio, queste sessioni di eventi di sistema sono:

  • AlwaysOn_health
  • system_health
  • telemetry_events

Provider PowerShell

È possibile gestire gli eventi estesi usando il provider PowerShell di SQL Server. Per altre informazioni, vedere Utilizzare il provider PowerShell per eventi estesi.

Visualizzazioni di sistema

Le viste di sistema per gli eventi estesi includono:

  • Viste del catalogo: per informazioni sulle sessioni di eventi definite da CREATE EVENT SESSION.
  • Viste a gestione dinamica (DMV): per informazioni sulle sessioni di eventi attive (avviate).

edizione Standard LECt e JOIN dalle viste di sistema per gli eventi estesi in SQL Server fornisce informazioni su:

  • Come unire le visualizzazioni
  • Diverse query utili basate su queste viste
  • Correlazione tra:
    • Visualizza colonne
    • ClausoleCREATE EVENT SESSION
    • Interfaccia utente di SSMS

Appendice: Query per trovare i titolari di autorizzazioni degli eventi estesi

Le autorizzazioni indicate in questo articolo sono:

  • ALTER ANY EVENT SESSION
  • VIEW SERVER STATE
  • CONTROL SERVER

L'istruzione seguente SELECT...UNION ALL restituisce righe che mostrano chi dispone delle autorizzazioni necessarie per la creazione di sessioni eventi e l'esecuzione di query sulle viste del catalogo di sistema per gli eventi estesi.

-- Ascertain who has the permissions listed in the ON clause.
-- 'CONTROL SERVER' permission includes the permissions
-- 'ALTER ANY EVENT SESSION' and 'VIEW SERVER STATE'.
SELECT 'Owner-is-Principal' AS [Type-That-Owns-Permission],
    NULL AS [Role-Name],
    prin.name AS [Owner-Name],
    PERM.permission_name COLLATE Latin1_General_CI_AS_KS_WS AS [Permission-Name]
FROM sys.server_permissions AS PERM
INNER JOIN sys.server_principals AS prin
    ON prin.principal_id = PERM.grantee_principal_id
WHERE PERM.permission_name IN (
    'ALTER ANY EVENT SESSION',
    'VIEW SERVER STATE',
    'CONTROL SERVER'
)
UNION ALL
-- Plus check for members of the 'sysadmin' fixed server role,
-- because 'sysadmin' includes the 'CONTROL SERVER' permission.
SELECT 'Owner-is-Role',
    prin.name, -- [Role-Name]
    CAST((IsNull(pri2.name, N'No members')) AS NVARCHAR(128)),
    NULL
FROM sys.server_role_members AS rolm
RIGHT JOIN sys.server_principals AS prin
    ON prin.principal_id = rolm.role_principal_id
LEFT JOIN sys.server_principals AS pri2
    ON rolm.member_principal_id = pri2.principal_id
WHERE prin.name = 'sysadmin';

HAS_PERMS_BY_NAME - funzione

L'istruzione seguente SELECT segnala le autorizzazioni. Si basa sulla funzione predefinita HAS_PERMS_BY_NAME.

Inoltre, se si dispone dell'autorità per rappresentare temporaneamente altri account di accesso, è possibile rimuovere il commento dalle istruzioni EXECUTE AS LOGIN e REVERT per verificare se altri account di accesso dispongono dell'autorizzazioneALTER ANY EVENT SESSION.

--EXECUTE AS LOGIN = 'LoginNameHere';
SELECT HAS_PERMS_BY_NAME(NULL, NULL, 'ALTER ANY EVENT SESSION');
--REVERT;