Avvio rapido: Eventi estesi in SQL ServerQuick Start: Extended events in SQL Server

In questo argomento si applica a: SìSQL ServerSìDatabase SQL di AzurenonAzure SQL Data Warehouse non Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Questo articolo è destinato agli sviluppatori SQL che non hanno familiarità con gli eventi estesi e vogliono creare una sessione eventi in pochi minuti.This article aims to help the SQL developer who is new to extended events, and who wants create an event session in just a few minutes. Usando gli eventi estesi, è possibile visualizzare i dettagli sulle operazioni interne del sistema e dell'applicazione SQL.By using extended events, you can see details about the inner operations of the SQL system and your application. Quando si crea una sessione di eventi estesi, si indica al sistema:When you create an extended event session, you tell the system:

  • A quali occorrenze si è interessati.Which occurrences you are interested in.
  • La modalità desiderata di ricezione delle segnalazioni di dati.How you want the system to report the data to you.

Questo articolo:This article does the following:

  • Usa schermate per illustrare i clic eseguiti in SSMS.exe per creare una sessione dell'evento.Uses screenshots to illustrate the clicks in SSMS.exe that create an event session.
  • Mette in correlazione le schermate alle istruzioni Transact-SQL equivalenti.Correlates the screenshots to equivalent Transact-SQL statements.
  • Illustra in dettaglio i termini e concetti di base delle operazioni eseguite e di T-SQL per le sessioni eventi.Explains in detail the terms and concepts behind the clicks and T-SQL for event sessions.
  • Illustra come testare la sessione eventi.Demonstrates how to test your event session.
  • Descrive le alternative relative ai risultati:Describes the alternatives around results:
    • Acquisizione dei risultati per l'archiviazione.Storage capture of results.
    • Risultati elaborati rispetto a risultati non elaborati.Processed versus raw results.
    • Strumenti per visualizzare i risultati in modi diversi e su diverse scale cronologiche.Tools for viewing the results in different ways and on different time scales.
  • Illustra come è possibile cercare e individuare tutti gli eventi disponibili.Shows how you can search for and discover all the available events.
  • Fornisce la chiave primaria e relazioni di chiave esterna che sono implicite tra le viste a gestione dinamica (DMV) per gli eventi estesi.Provides the primary key and foreign key relationships that are implicit among the dynamic management views (DMVs) for extended events.
  • Descrive altri contenuti da apprendere in articoli correlati.Describes what more there is to learn in related articles.

I blog e altri contenuti informali talvolta fanno riferimento agli eventi estesi usando l'abbreviazione XEvent.Blogs and other informal conversations sometimes refer to extended events by the abbreviation xevents.

Nota

Per informazioni sulle differenze degli eventi estesi tra Microsoft SQL Server e Database SQL di Azure, vedere Eventi estesi nel database SQL.For information about extended event differences between Microsoft SQL Server and Azure SQL Database, see Extended events in SQL Database.

Operazioni preliminari alla demoPreparations before demo

Le operazioni preliminari seguenti sono necessarie per eseguire realmente la dimostrazione fornita di seguito.The following preliminaries would be required for you to actually perform the upcoming demonstration.

  1. Scaricare SQL Server Management Studio (SSMS)Download SQL Server Management Studio (SSMS)
    • Ogni mese è necessario installare l'aggiornamento mensile più recente di SSMS.Each month you should install the latest monthly update of SSMS.
  2. Accedere a Microsoft SQL Server 2014 o versione successiva oppure a un database di SQL Azure dove SELECT @@version restituisce un valore il cui primo nodo è 12 o superiore.Log in to Microsoft SQL Server 2014 or higher, or in to an Azure SQL Database database where SELECT @@version returns a value whose first node is 12 or higher.
  3. Assicurarsi che l'account abbia autorizzazione server di ALTER ANY EVENT SESSION.Ensure that your account has the server permission of ALTER ANY EVENT SESSION.
    • Per gli utenti interessati, altre informazioni sulla sicurezza e le autorizzazioni correlate agli eventi estesi sono disponibili nell' Appendicealla fine di questo articolo.If interested, more details about security and permissons related to extended events are available at the end of this article in the Appendix.

Demo di integrazione di SSMSDemo of SSMS integration

SSMS.exe fornisce un'eccellente interfaccia utente (UI) per gli eventi estesi.SSMS.exe provides an excellent user interface (UI) for extended events. L'interfaccia utente è di qualità tale che in molti casi non occorre usare gli eventi estesi con Transact-SQL o le viste a gestione dinamica (DMV) che hanno come destinazione gli eventi estesi.The UI is so good that many users have no need to engage with extended events by using Transact-SQL or the dynamic management views (DMVs) that target extended events.

Questa sezione illustra i passaggi dell'interfaccia utente necessari per creare un evento esteso e visualizzare i dati segnalati.In this section you can see the UI steps to create an extended event, and to see the data it reports. Successivamente vengono fornite informazioni di approfondimento sui concetti relativi a tali passaggi.After the steps, you can read about the concepts involved in the steps for a deeper understanding.

Passaggi della demoSteps of demo

I passaggi sono comprensibili anche se si decide di non eseguirli.You can understand the steps even if you decide not to perform them. La dimostrazione ha inizio con l'avvio della finestra di dialogo Nuova sessione ,The demonstration starts the New Session dialog. di cui verranno trattate le quattro pagine denominate:We process its four pages named:

  • GeneraleGeneral
  • EventiEvents
  • Archiviazione dei datiData Storage
  • AvanzateAdvanced

Il testo e le schermate di supporto possono presentare leggere imprecisioni a causa delle modifiche apportate all'interfaccia utente nel corso di mesi o anni.The text and supporting screenshots can become slightly inexact when the SSMS UI is tweaked over the months or years. Le schermate restano tuttavia valide ai fini della spiegazione se le discrepanze sono di minore entità.Yet the screenshots remain effective for explanation if the discrepancies or only minor.

  1. Connettersi a SSMS.Connect with SSMS.

  2. In Esplora oggetti, fare clic su Gestione > Eventi estesi > Nuova sessione.In the Object Explorer, click Management > Extended Events > New Session. La finestra di dialogo Nuova sessione è preferibile rispetto alla finestra di dialogo di Creazione guidata nuova sessioneanche se le due finestre sono simili tra loro.The New Session dialog is preferable to the New Session Wizard, although the two are similar to each other.

  3. In alto a sinistra fare clic sulla pagina Generale .In the upper-left, click the General page. Quindi digitare SessioneUtente, o qualsiasi nome desiderato, nella casella di testo Nome sessione .Then type YourSession, or any name you like, into the Session name text box. Non premere il pulsante OK ; questa operazione verrà eseguita solo alla fine della demo.Do not press the OK button yet, that comes only at the end of the demo.

    Nuova sessione > Generale > Nome sessione

  4. In alto a sinistra fare clic sulla pagina Eventi e quindi fare clic sul pulsante Seleziona .In the upper-left, click the Events page, and then click the Select button.

    Nuova sessione > Eventi > Seleziona > Libreria di eventi, Eventi selezionati

  5. Nell'elenco a discesa dell'area Libreria di eventi scegliere Solo nomi evento.In the Event library area, in the drop-down list, choose Event names only.

    • Nella casella di testo digitare sql, che consente di filtrare e ridurre il lungo elenco di eventi disponibili usando un operatore contains .Into the text box, type in sql, which filters and reduces the long list of available events by using a contains operator.
    • Scorrere e fare clic sull'evento denominato sql_statement_completed.Scroll and click the event named sql_statement_completed.
    • Fare clic sul pulsante freccia destra > per spostare l'evento nella casella Eventi selezionati .Click the right arrow button > to move the event to the Selected events box.
  6. Sempre nella pagina Eventi fare clic sul pulsante Configura all'estrema destra.Staying on the Events page, click the Configure button at the far right.

    • Nella schermata seguente, dalla quale è stato eliminato il lato sinistro per una migliore visualizzazione, è possibile vedere l'area Opzioni di configurazione eventi .With the left side chopped off for better display, in the following screenshot you can see the Event configuration options area.

      Nuova sessione > Eventi > Configura > Filtro (predicato) > Campo

  7. Fare clic sulla scheda Filtro (predicato) . Successivamente, fare clic su Fare clic qui per aggiungere una clausolase si intende acquisire tutte le istruzioni SQL SELECT che hanno una clausola HAVING.Click the Filter (Predicate) tab. Next, click Click here to add a clause, for the intention of capturing all SQL SELECT statements that have a HAVING clause.

  8. Scegliere sqlserver.sql_text dall'elenco a discesa Campo.In the Field drop-down list, and choose sqlserver.sql_text.

    • Per Operatore scegliere un operatore LIKE.For Operator choose a LIKE operator.
    • Per Valore digitare %SELECT%HAVING%.For Value type in %SELECT%HAVING%.

      Nota

      In questo nome in due parti, sqlserver è il nome del pacchetto e sql_text è il nome del campo.In this two part name, sqlserver is the package name, and sql_text is the field name. L'evento scelto in precedenza, sql_statement_completed , deve essere nello stesso pacchetto del campo scelto.The event we chose earlier, sql_statement_completed must be in the same package as the field we choose.

  9. In alto a sinistra fare clic sulla pagina Archiviazione dati .In the upper-left, click the Data Storage page.

  10. Nell'area Destinazioni fare clic su Fare clic qui per aggiungere una destinazione.In the Targets area, click Click here to a target.

    • Nell'elenco a discesa Tipo scegliere event_file.In the Type drop-down list, choose event_file.
    • Selezionando questa opzione i dati degli eventi verranno archiviati in un file che è possibile visualizzare.This means the event data will be stored in a file that we can view.

    Nuova sessione > Archiviazione dati > Destinazioni > Tipo > event_file

  11. Nell'area Proprietà digitare un nome di percorso e file completo nella casella di testo Nome file sul server .In the Properties area, type in a full path and file name into the File name on server text box.

    • L'estensione del nome file deve essere XEL.The file name extension must be .xel.
    • Questo semplice test richiederà meno di 1 MB delle dimensioni del file.Our little test will need less than 1 MB of file size.

    Nuova sessione > Avanzate > Latenza di recapito massima > OK

  12. In alto a sinistra fare clic sulla pagina Avanzate .In the upper-left, click the Advanced page.

    • Ridurre la Latenza di recapito massima a 3 secondi.Reduce the Maximum dispatch latency down to 3 seconds.
    • Infine, fare clic su OK nella parte inferiore.Finally, click the OK button at the bottom.
  13. In Esplora oggettiespandere Gestione > Sessionie visualizzare il nuovo nodo per SessioneUtente.Back in the Object Explorer, expand Management > Sessions, and see the new node for YourSession.

    Nodo per la nuova *sessione eventi* denominata SessioneUtente, in Esplora oggetti, in Gestione> Eventi estesi > Sessioni

Modificare la sessione eventiEdit your event session

In Esplora oggettidi SSMS è possibile modificare la sessione eventi facendo clic con il pulsante destro del mouse sul relativo nodo e quindi selezionando Proprietà.In the SSMS Object Explorer, you can edit your event session by right-clicking its node, and then clicking Properties. Viene visualizzata la stessa finestra di dialogo a più pagine.The same multi-page dialog is displayed.

T-SQL corrispondente per la sessione eventiCorresponding T-SQL for your event session

È stata usata l'interfaccia utente di SSMS per generare uno script T-SQL che ha creato la sessione eventi.You used the SSMS UI to generate a T-SQL script that created your event session. Per visualizzare lo script generato seguire questa procedura:You can see the generated script as follows:

  • Fare clic con il pulsante destro sul nodo della sessione, quindi selezionare Crea script per sessione > CREATE in > Appunti.Right-click your session node, click Script Session as > CREATE to > Clipboard.
  • Incollare in qualsiasi editor di testo.Paste into any text editor.

Di seguito è riportata l'istruzione T-SQL CREATE EVENT SESSION per SessioneUtente, che è stata generata dai clic eseguiti nell'interfaccia utente:Next is the T-SQL CREATE EVENT SESSION statement for YourSession, which was generated by your clicks in the UI:

CREATE EVENT SESSION [YourSession]
    ON SERVER 
    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:\Junk\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

Nota

Per il database SQL Azure, nell'istruzione CREATE EVENT SESSION precedente, la clausola ON SERVER potrebbe invece essere ON DATABASE.For Azure SQL Database, in the preceding CREATE EVENT SESSION statement, the ON SERVER clause would be instead be ON DATABASE.

Per altre informazioni sulle differenze degli eventi estesi tra Microsoft SQL Server e Database SQL di Azure, vedere Eventi estesi nel database SQL.For more information about extended event differences between Microsoft SQL Server and Azure SQL Database, see Extended events in SQL Database.

Pre-DROP della sessione eventiPre-DROP of the event session

Prima dell'istruzione CREATE EVENT SESSION, potrebbe essere necessario eseguire un'istruzione DROP EVENT SESSION nel caso in cui il nome esiste già.Before the CREATE EVENT SESSION statement, you might want to conditionally issue a DROP EVENT SESSION in case the name already exists.

IF EXISTS (SELECT *
      FROM sys.server_event_sessions    -- If Microsoft SQL Server.
    --FROM sys.database_event_sessions  -- If Azure SQL Database in the cloud.
      WHERE name = 'YourSession')
BEGIN
    DROP EVENT SESSION YourSession
          ON SERVER;    -- If Microsoft SQL Server.
        --ON DATABASE;  -- If Azure SQL Database.
END
go

ALTER per avviare o arrestare la sessione eventiALTER to start and stop the event session

Quando si crea una sessione eventi, il valore predefinito è l'avvio non automatico.When you create an event session, the default is for it to not start running automatically. È possibile avviare o arrestare la sessione eventi in qualsiasi momento usando l'istruzione T-SQL ALTER EVENT SESSION seguente.You can start or stop your event session any time by using the following T-SQL ALTER EVENT SESSION statement.

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

È possibile indicare l'avvio automatico della sessione eventi all'avvio dell'istanza di SQL Server.You have the option of telling the event session to automatically start when the SQL Server instance is started. Vedere la parola chiave STARTUP STATE = ON in CREATE EVENT SESSION.See the STARTUP STATE = ON keyword on CREATE EVENT SESSION.

  • L'interfaccia utente di SSMS offre una casella di controllo corrispondente nella pagina Nuova sessione > Generale .The SSMS UI offers a corresponding check box on New Session > General page.

Testare la sessione eventiTest your event session

Testare la sessione eventi con questi semplici passaggi:Test your event session with these simple steps:

  1. In Esplora oggettidi SSMS fare clic con il pulsante destro del mouse sul nodo della sessione, quindi fare clic su Avvia sessione.In the SSMS Object Explorer, right-click your event session node, and then click Start Session.
  2. Eseguire alcune volte l'istruzione SELECT...HAVING seguente.Run the following SELECT...HAVING statement a couple times.
    • In teoria è possibile modificare il valore HAVING Count tra le due esecuzioni, passando tra 2 e 3.Ideally you might change the HAVING Count value between the two runs, toggling between 2 and 3. Ciò consente di visualizzare le differenze nei risultati.This enables you to see the differences in the results.
  3. Fare clic con il pulsante destro del nodo della sessione, quindi fare clic su Arresta sessione.Right-click your session node, and then click Stop Session.
  4. Leggere la sottosezione successiva su come SELEZIONARE e visualizzare i risultati.Read the next subsection about how to SELECT and view the results.
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 informazioni, di seguito è riportato l'output approssimativo della precedente istruzione SELECT...HAVING.Just for completeness, here is the approximate output from the preceding 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
***/

SELEZIONARE i risultati completi in formato XMLSELECT the full results as XML

In SSML eseguire l'istruzione T-SQL SELECT seguente per restituire i risultati in cui ogni riga include i dati sull'occorrenza di un evento.In SSMS, run the following T-SQL SELECT to return results where each row provides the data about one event occurrence. CAST AS XML consente di visualizzare facilmente i risultati.The CAST AS XML makes viewing the results easy.

Nota

Il sistema di eventi aggiunge sempre un numero lungo al nome file event_file xel specificato.The event system always appends a long number to the .xel event_file file name you specified. Prima di poter eseguire l'istruzione SELECT dal file, è necessario copiare il nome completo specificato dal sistema e incollarlo nell'istruzione SELECT.Before you can run the following SELECT from the file, you must copy the full name given by the system, and paste it into the SELECT.

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 ssms.exe results grid, double-click this xml cell!
    FROM
        sys.fn_xe_file_target_read_file(
            'C:\Junk\YourSession_Target_0_131085363367310000.xel',
            null, null, null
        );

L'istruzione SELECT precedente offre due modi per visualizzare i risultati completi di una riga di evento specifica:The preceding SELECT gives you two ways to view the full results of any given event row:

  • Eseguire l'istruzione SELECT in SSMS, quindi fare clic su una cella della colonna event_data_XML .Run the SELECT in SSMS, and then click a cell in the event_data_XML column. Si tratta di un metodo molto pratico.This is very handy.
  • Copiare la lunga stringa XML da una cella nella colonna event_data .Copy the long XML string from a cell in the event_data column. Incollare in qualsiasi editor di testo semplice come Notepad.exe e salvare la stringa in un file con estensione XML.Paste into any simple text editor like Notepad.exe, and save the string in a file with extension .XML. Aprire quindi il file XML con un browser.Then open the .XML file with a browser.

Visualizzare i risultati per un eventoDisplay of results for one event

Ora verrà esaminata una parte dei risultati, che sono in formato XML.Next we see part of the results, which are in XML format. In questo caso il codice XML viene modificato per renderlo più breve ai fini della visualizzazione.The XML here is edited here to make it shorter for display. Si noti che <data name="row_count"> visualizza un valore di 6, che corrisponde alle 6 righe di risultati visualizzate in precedenza.Note that <data name="row_count"> displays a value of 6, which matches our 6 result rows displayed earlier. Inoltre, è visibile l'istruzione SELECT completa.And we can see the whole SELECT statement.

<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>

SSMS per visualizzare i risultatiSSMS to display results

Nell'interfaccia utente di SSMS sono disponibili numerose funzionalità avanzate che è possibile usare per visualizzare i dati acquisiti da un evento esteso.There are several advanced features in the SSMS UI you can use to view the data that is captured from an extended event. I dettagli sono disponibili in:Details are at:

Le nozioni di base iniziano con le opzioni del menu di scelta rapida Visualizza dati di destinazione e Controlla i dati dinamici.The basics start with context menu options labeled View Target Data and Watch Live Data.

Visualizza dati di destinazioneView Target Data

In Esplora oggettidi SSMS è possibile fare clic con il pulsante destro del mouse sul nodo di destinazione sotto il nodo della sessione eventi.In the SSMS Object Explorer, you can right-click the target node which is under your event session node. Nel menu di scelta rapida fare clic su Visualizza dati di destinazione.In the context menu you click View Target Data. SSMS visualizza i dati.SSMS displays the data.

La visualizzazione non viene aggiornata man mano che nuovi dati vengono segnalati dall'evento.The display is not updated as new data is reported by the event. È possibile, tuttavia, fare clic di nuovo clic su Visualizza dati di destinazione .But you can click View Target Data again.

Visualizzare i dati di destinazione, in SSMS > Gestione > Eventi estesi > Sessioni > SessioneUtente > package0.event_file, fare doppio clic su

Controlla i dati dinamiciWatch Live Data

In Esplora oggettidi SSMS è possibile fare clic con il pulsante destro del mouse sul nodo della sessione eventi.In the SSMS Object Explorer, you can right-click your event session node. Nel menu di scelta rapida fare clic su Controlla i dati dinamici.In the context menu you click Watch Live Data. SSMS visualizza i dati in ingresso man mano che continuano ad arrivare in tempo reale.SSMS displays incoming data as it continues to arrive in real time.

Controlla i dati dinamici, in SSMS, Gestione > Eventi estesi > Sessioni > SessioneUtente, fare clic con il pulsante destro del mouse

ScenariScenarios

Esistono innumerevoli scenari in cui è possibile usare in maniera efficace gli eventi estesi.There are innumerable scenarios for the effective use of extended events. Gli articoli seguenti forniscono scenari di esempio che comportano l'uso dei blocchi acquisiti durante le query.The following articles provide example scenarios that involve the locks taken during queries.

Alcuni scenari specifici per le sessioni eventi finalizzate alla valutazione dei blocchi sono descritti negli articoli seguenti.Specific scenarios for event sessions aimed at assessing locks are described in the following articles. Gli articoli illustrano anche alcune tecniche avanzate, ad esempio l'uso di @dbide l'uso dinamico di EXECUTE (@YourSqlString):The articles also show some advanced techniques, such as using @dbid, and using the dynamic EXECUTE (@YourSqlString):

Termini e concetti negli eventi estesiTerms and concepts in extended events

La tabella seguente elenca i termini usati per gli eventi estesi e ne descrive i significati.The following table lists the terms used for extended events, and describes their meanings.

NomeTerm DescrizioneDescription
sessione eventievent session Un costrutto incentrato su uno o più eventi, oltre a elementi di supporto quali azioni e destinazioni.A construct centered around one or more events, plus supporting items like actions are targets. L'istruzione CREATE EVENT SESSION viene costruita a ogni sessione eventi.The CREATE EVENT SESSION statement constructs each event session. È possibile modificare una sessione eventi in modo da avviarla e arrestarla in base alle proprie esigenze.You can ALTER an event session to start and stop it at will.

Una sessione eventi viene a volte indicata semplicemente come sessione, quando il dal contesto si evince che indica la sessione eventi.An event session is sometimes referred to as just a session, when the context clarifies it means event session.

Altre informazioni sulle sessioni eventi sono descritte in: Sessioni degli eventi estesi di SQL Server.Further details about event sessions are described in: SQL Server Extended Events Sessions.
eventoevent Un'occorrenza specifica del sistema che viene controllata da una sessione eventi attiva.A specific occurrence in the system that is watched for by an active event session.

Ad esempio, l'evento sql_statement_completed rappresenta il momento in cui viene completata un'istruzione T-SQL.For example, the sql_statement_completed event represents the moment that any given T-SQL statement completes. L'evento può segnalare la durata e altri dati.The event can report its duration and other data.
targettarget Un elemento che riceve i dati di output da un evento acquisito.A item that receives the output data from a captured event. La destinazione visualizza i dati all'utente.The target displays the data to you.

Gli esempi includono event_filee la memoria ring_buffer, che rappresenta una versione più pratica e leggera della destinazione event_file.Examples include the event_file, and its handy light-weight cousin the memory ring_buffer. La destinazione histogram esegue alcune operazioni di elaborazione dei dati prima di visualizzarli.The fancier histogram target performs some processing of your data before displaying it.

Qualsiasi destinazione può essere usata per qualsiasi sessione eventi.Any target can be used for any event session. Per informazioni dettagliate, vedere Destinazioni per gli eventi estesi in SQL Server.For details, see Targets for Extended Events in SQL Server.
actionaction Un campo noto all'evento.A field known to the event. I dati del campo vengono inviati alla destinazione.Data from the field is sent to the target. Il campo azione è strettamente correlato al filtro predicato.The action field is closely related to the predicate filter.
filtro predicatopredicate filter Test di dati in un campo evento, usato in modo che solo un subset interessante di occorrenze dell'evento venga inviato alla destinazione.A test of data in an event field, used so that only an interesting subset of event occurrences are sent to the target.

Ad esempio, un filtro può includere solo le occorrenze dell'evento sql_statement_completed in cui l'istruzione T-SQL conteneva la stringa HAVING.For example, a filter could include only those sql_statement_completed event occurrences where the T-SQL statement contained the string HAVING.
pacchettopackage Un qualificatore del nome associato a ogni elemento in un set di elementi incentrato su un core di eventi.A name qualifier attached to each item in a set of items that centers around a core of events.

Ad esempio, un pacchetto potrebbe avere eventi sul testo T-SQL,For example, a package might have events about T-SQL text. un evento potrebbe riguardare T-SQL in un batch delimitato da GO,One event could be about all the T-SQL in a GO-delimited batch. un evento più circoscritto potrebbe riguardare le singole istruzioni T-SQL.Meanwhile another narrower event is about individual T-SQL statements. Inoltre, per qualsiasi istruzione T-SQL sono disponibili gli eventi iniziali e completati.Further, for any one T-SQL statement, there is are start and completed events.

Anche i campi appropriati per gli eventi sono inclusi nel pacchetto con gli eventi.Fields appropriate for the events are also in the package with the events. La maggior parte delle destinazioni si trova in package0 e viene usata con gli eventi di molti altri pacchetti.Most targets are in package0 and are used with events from many other packages.

Come individuare gli eventi disponibili nei pacchettiHow to discover the available events in packages

L'istruzione T-SQL SELECT seguente restituisce una riga per ogni evento disponibile il cui nome contiene la stringa di tre caratteri 'sql'.The following T-SQL SELECT returns a row for each available event whose name contains the three character string 'sql'. Naturalmente, è possibile modificare il valore LIKE per cercare nomi di eventi diversi.Of course, you can edit the LIKE value to search for different event names. Le righe mostrano anche il nome del pacchetto che contiene l'evento.The rows also name the package that contains the event.

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
        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;

La visualizzazione seguente mostra la riga restituita, modificata in questo caso nel formato di colonna nome = valore.The following display shows the returned row, edited here into the format of column name = value. I dati provengono dall'evento sql statement_completed usato nei passaggi di esempio precedenti.The data is from the sql-statement_completed event that was used in the preceding example steps. La frase per la colonna oggetto Object-Descr è particolarmente utile.The sentence for the Object-Descr column is particularly helpful.

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

Un'altra opzione di ricerca consiste nell'usare l'interfaccia utente di SSMS per la finestra di dialogo Nuova sessione > Eventi > Libreria di eventi visualizzata in una schermata precedente.Another search option is to use the SSMS UI for New Session > Events > Event library dialog that is shown in a preceding screenshot.

Classi di evento di Traccia SQL, con eventi estesiSQL Trace event classes, with extended events

Una descrizione dell'uso degli eventi estesi con le classi e le colonne di evento di Traccia SQL è disponibile all'indirizzo: Visualizzare gli eventi estesi equivalenti alle classi di eventi di Traccia SQLA description of using extended events with SQL Trace event classes and columns is available at: View the Extended Events Equivalents to SQL Trace Event Classes

Event Tracing for Windows (ETW), con eventi estesiEvent Tracing for Windows (ETW), with extended events

Le descrizioni dell'uso degli eventi estesi con Event Tracing for Windows (ETW) sono disponibili in:Descriptions of using extended events with Event Tracing for Windows (ETW) are available at:

Gli eventi ETW non sono disponibili negli eventi estesi del database di SQL Azure.The ETW events are not available in extended events on Azure SQL Database.

Elementi aggiuntiviAdditional items

Questa sezione tratta brevemente alcuni argomenti di contenuto vario.This section briefly mentions a couple of miscellaneous items.

Sessioni eventi installate con SQL ServerEvent sessions installed with SQL Server

SQL Server viene fornito con alcuni eventi estesi già creati.SQL Server comes with a few extended events already created. Tutti sono configurati per essere avviati automaticamente all'avvio del sistema SQL.All are configured to start whenever the SQL system is started. Le sessioni eventi raccolgono i dati che potrebbero risultare utili in caso di errore di sistema.These event sessions gather data that might be helpful in case of a system error. Analogamente a tutti gli eventi estesi, utilizzano solo una piccola quantità di risorse e Microsoft consiglia di eseguirle da sole.Like all extended events, they consume only tiny a amount of resources, and Microsoft recommends that they be left alone to run.

È possibile visualizzare le sessioni eventi in Esplora oggetti di SSMS in Gestione > Eventi estesi > Sessioni.You can see these event sessions in the SSMS Object Explorer under Management > Extended Events > Sessions. Al mese di giugno 2016 l'elenco di queste sessioni eventi installate è il seguente:As of June 2016, the list of these installed event sessions is:

  • AlwaysOn_healthAlwaysOn_health
  • system_healthsystem_health
  • telemetry_eventstelemetry_events

Provider PowerShell per eventi estesiPowerShell provider for extended events

È possibile gestire gli eventi estesi di SQL Server usando il provider PowerShell per SQL Server.You can manage SQL Server extended events by using the SQL Server PowerShell provider. Informazioni dettagliate sono fornite in Usare il provider PowerShell per eventi estesiDetails are at: Use the PowerShell Provider for Extended Events

Viste di sistema per gli eventi estesiSystem views for extended events

Le viste di sistema per gli eventi estesi includono:The system views for extended events include:

  • Viste del catalogo: per informazioni sulle sessioni eventi che sono stati definiti da CREATE EVENT SESSION.Catalog views: for information about event sessions that have been defined by CREATE EVENT SESSION.

  • Viste a gestione dinamica (DMV): per informazioni sulle sessioni eventi in esecuzione.Dynamic management views (DMVs): for information about event sessions are actively running at present.

Istruzioni SELECT e JOIN da viste di sistema per eventi estesi in SQL Server : forniscono informazioni su:SELECTs and JOINs From System Views for Extended Events in SQL Server - provides information about:

  • Come creare un join delle viste.How to join the views to each other.

  • Diverse istruzioni SELECT utili delle viste.Several useful SELECTs from the views.

  • La correlazione tra:The correlation between:

    • Colonne delle viste.The view columns.
    • Clausole CREATE EVENT SESSION.CREATE EVENT SESSION clauses.
    • Controlli dell'interfaccia utente di SSMS.The SSMS UI controls.

Appendice: Istruzioni SELECT per verificare in anticipo il proprietario delle autorizzazioniAppendix: SELECTs to ascertain permission owner in advance

Le autorizzazioni indicate in questo articolo sono:The permissions mentioned in this article are:

  • ALTER ANY EVENT SESSIONALTER ANY EVENT SESSION
  • VIEW SERVER STATEVIEW SERVER STATE
  • CONTROL SERVERCONTROL SERVER

Le istruzioni Transact-SQL SELECT seguenti possono segnalare l'identità del proprietario di tali autorizzazioni.The following Transact-SQL SELECT statements can report who has these permissions.

Autorizzazioni dirette UNION più autorizzazioni derivate dal ruoloUNION direct permissions plus role derived permissions

L'istruzione SELECT...UNION ALL seguente restituisce le righe che mostrano l'identità di chi ha le autorizzazioni necessarie per la creazione di sessioni eventi e l'esecuzione di query nelle viste del catalogo di sistema per gli eventi estesi.The following SELECT...UNION ALL statement returns rows that show who has the necessary permissions for creating event sessions and querying the system catalog views for extended events.

-- 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
        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 OUTER JOIN sys.server_principals    AS prin

            ON prin.principal_id = rolm.role_principal_id

        LEFT OUTER JOIN sys.server_principals     AS pri2

            ON rolm.member_principal_id = pri2.principal_id
    WHERE
        prin.name = 'sysadmin'
    ORDER BY
        1,2,3,4;

HAS_PERMS_BY_NAME - funzioneHAS_PERMS_BY_NAME function

L'istruzione SELECT seguente segnala le autorizzazioni.The follow SELECT reports your permissions. Si basa sulla funzione predefinita HAS_PERMS_BY_NAME.It relies on the built-in function HAS_PERMS_BY_NAME.

Inoltre, se si ha l'autorità di rappresentare temporaneamente altri account, è possibile rimuovere il commento dalle istruzioni EXECUTE AS LOGIN e REVERT per richiedere informazioni sugli altri account.Further, if you have authority to temporarily impersonate other accounts, you can uncomment the EXECUTE AS LOGIN and REVERT statements, to inquire about other accounts.

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

Di seguito sono forniti collegamenti alla documentazione relativa a queste istruzioni SELECT e alle autorizzazioni:Here are links to documentation related to these SELECTs, and to permissions: