Panoramica degli eventi estesi

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure

L'architettura di Eventi estesi di SQL Server consente agli utenti di raccogliere la quantità di dati necessaria per risolvere i problemi o identificare un problema di prestazioni. Eventi estesi è configurabile e facilmente scalabile.

Gli eventi estesi sostituiscono le funzionalità deprecate SQL trace e SQL Server Profiler

Per altre informazioni sugli eventi estesi, vedere: Avvio rapido: Eventi estesi in SQL Server.

Vantaggi degli eventi estesi di SQL Server

Si tratta di un sistema di monitoraggio delle prestazioni leggero in cui vengono usate le risorse minime per le prestazioni. SQL Server Management Studio un'interfaccia utente grafica per eventi estesi per creare e modificare sessioni e visualizzare e analizzare i dati delle sessioni. Qui è possibile trovare altre informazioni su queste estensioni: | Gestire le sessioni eventi nel Esplora oggetti | Usare il SSMS profiler XEvent

Concetti degli eventi estesi

Eventi estesi di SQL Server è basato su concetti esistenti, ad esempio un evento o un consumer di eventi, usa concetti di Event Tracing for Windows (ETW) e ne introduce di nuovi.

Nella seguente tabella vengono descritti i concetti negli eventi estesi.

Argomento Descrizione
Pacchetti degli eventi estesi di SQL Server Descrive i pacchetti di Eventi estesi che contengono oggetti. Questi oggetti vengono usati per ottenere ed elaborare dati durante l'esecuzione di una sessione di Eventi estesi.
Destinazioni degli eventi estesi di SQL Server Vengono descritti i consumer di eventi che possono ricevere dati durante una sessione dell'evento.
Motore degli eventi estesi di SQL Server Viene descritto il motore che implementa e gestisce una sessione degli eventi estesi.
Sessioni degli eventi estesi di SQL Server Viene descritta la sessione Eventi estesi.
   

Architettura degli eventi estesi

Eventi estesi è il nome di un sistema generale di gestione degli eventi per sistemi server. L'infrastruttura degli eventi estesi supporta la correlazione di dati da SQL Servere in certe condizioni, la correlazione di dati dal sistema operativo e dalle applicazioni di database. Nel caso del sistema operativo, l'output degli eventi estesi deve essere indirizzato a Event Tracing for Windows (ETW). ETW consente di correlare i dati di un evento con i dati di un evento del sistema operativo o di un'applicazione.

In tutte le applicazioni sono presenti punti di esecuzione utili sia all'interno che all'esterno di un'applicazione. All'interno dell'applicazione, l'elaborazione asincrona può essere accodata utilizzando informazioni raccolte durante l'esecuzione iniziale di un'attività. All'esterno dell'applicazione, i punti di esecuzione forniscono utilità di monitoraggio con informazioni. Le informazioni sono relative alle caratteristiche del comportamento e delle prestazioni dell'applicazione monitorata.

Gli eventi estesi supportano l'utilizzo di dati degli eventi all'esterno di un processo. Questi dati vengono in genere usati dagli utenti che amministrano o supportano un prodotto eseguendo il monitoraggio delle prestazioni o sviluppando applicazioni su un prodotto a scopo di debug. I dati vengono utilizzati o analizzati usando strumenti come profiler XEvent e Monitor prestazioni, T-SQL o Windows da riga di comando.

Gli aspetti chiave della progettazione degli eventi estesi sono i seguenti:

  • Il motore degli eventi estesi è agnostico in termini di eventi. Il motore riesce ad associare qualsiasi evento a qualsiasi destinazione, perché il motore non è vincolato al contenuto dell'evento. Per ulteriori informazioni sul motore degli eventi estesi, vedere SQL Server Extended Events Engine.

  • Gli eventi sono separati dai consumer di eventi chiamati destinazioni negli eventi estesi. Ciò significa che qualsiasi destinazione può ricevere qualsiasi evento. Inoltre, qualsiasi evento generato può essere utilizzato automaticamente dalla destinazione, che può scrivere nel log o fornire un contesto dell'evento supplementare. Per ulteriori informazioni, vedere SQL Server Extended Events Targets.

  • Gli eventi sono distinti dall'azione da intraprendere quando un evento si verifica. Di conseguenza, qualsiasi azione può essere associata a qualsiasi evento.

  • I predicati consentono di filtrare dinamicamente i casi in cui i dati degli eventi devono essere acquisiti. Il filtro dinamico garantisce maggiore flessibilità per l'infrastruttura di Eventi estesi. Per ulteriori informazioni, vedere SQL Server Extended Events Packages.

Gli eventi estesi possono generare in modo sincrono dati degli eventi (e in modo asincrono elaborare tali dati) il che fornisce una soluzione flessibile per la gestione degli eventi. Inoltre, gli eventi estesi forniscono le funzionalità seguenti:

  • Approccio unificato alla gestione degli eventi nel sistema server, consentendo agli utenti di isolare eventi specifici ai fini della risoluzione dei problemi.

  • Supporto e integrazione con gli strumenti ETW esistenti.

  • Meccanismo di gestione degli eventi interamente configurabile, basato su Transact-SQL.

  • Possibilità di monitorare dinamicamente i processi attivi, con un impatto minimo su tali processi.

  • Sessione di integrità di sistema predefinita che viene eseguita senza effetti visibili sulle prestazioni. Tale sessione consente di raccogliere dati di sistema che è possibile utilizzare per risolvere i problemi relativi alle prestazioni. Per altre informazioni, vedere Utilizzare la sessione system_health.

Attività degli eventi estesi

Usando o per eseguire istruzioni DDL (Data Definition Language), utilizzare funzioni e viste a gestione dinamica o viste del catalogo, è possibile creare soluzioni di risoluzione dei problemi degli eventi estesi semplici o complesse per Management Studio Transact-SQL Transact-SQL SQL Server SQL Server l'ambiente in uso.

Descrizione dell'attività Argomento
Utilizzare Esplora oggetti per gestire sessioni di eventi. Gestire sessioni di eventi in Esplora oggetti
Viene descritto come creare una sessione di eventi estesi. Creare una sessione Eventi estesi
Viene descritto come visualizzare e aggiornare i dati di destinazione. Visualizzazione avanzata dei dati di destinazione da eventi estesi in SQL Server
Viene descritto come utilizzare gli strumenti degli eventi estesi per creare e gestire sessioni di eventi estesi di SQL Server . Strumenti degli eventi estesi
Viene descritto come alterare una sessione Eventi estesi. Modificare una sessione Eventi estesi
Viene descritto come ottenere informazioni sui campi associati agli eventi. Recuperare i campi per tutti gli eventi
Viene descritto come individuare gli eventi disponibili nei pacchetti registrati. Visualizzare gli eventi per i pacchetti registrati
Viene descritto come individuare le destinazioni degli eventi estesi disponibili nei pacchetti registrati. Visualizzare le destinazioni degli eventi estesi per i pacchetti registrati
Viene descritto come visualizzare gli eventi e le azioni Eventi estesi equivalenti a ogni evento di Traccia SQL e alle colonne associate. Visualizzare gli eventi estesi equivalenti alle classi di eventi di Traccia SQL
Viene descritto come trovare i parametri che è possibile impostare quando si utilizza l'argomento ADD TARGET in CREATE EVENT SESSION o ALTER EVENT SESSION. Recuperare i parametri configurabili per l'argomento ADD TARGET
Viene descritto come convertire uno script di Traccia SQL esistente in una sessione Eventi estesi. Convertire uno script di Traccia SQL esistente in una sessione Eventi estesi
Viene descritto come determinare quali query mantengono il blocco, il piano della query e lo stack Transact-SQL al momento del blocco. Individuare le query che mantengono attivi i blocchi
Viene descritto come individuare l'origine dei blocchi che hanno effetti negativi sulle prestazioni del database. Cercare gli oggetti con il maggior numero di blocchi acquisiti
Viene illustrato come utilizzare gli eventi estesi con Analisi eventi per Windows al fine di monitorare l'attività del sistema. Monitorare l'attività del sistema mediante gli eventi estesi
Uso delle viste catalogo e delle viste a gestione dinamica (DMV) per gli eventi estesi Istruzioni SELECT e JOIN da viste di sistema per eventi estesi in SQL Server
   

Usare la query Transact-SQL (T-SQL) seguente per elencare tutti i possibili eventi estesi e le relative descrizioni:

SELECT
     obj1.name as [XEvent-name],
     col2.name as [XEvent-column],
     obj1.description as [Descr-name],
     col2.description as [Descr-column]
  FROM
               sys.dm_xe_objects        as obj1
      JOIN sys.dm_xe_object_columns as col2 on col2.object_name = obj1.name
  ORDER BY
    obj1.name,
    col2.name

Gli esempi di codice possono essere diversi per il database SQL di Azure

Alcuni esempi di codice Transact-SQL scritti per SQL Server locale richiedono qualche piccola modifica per funzionare nel servizio database SQL di Azure nel cloud. Una categoria di questi esempi di codice prevede viste di sistema i cui prefissi dei nomi differiscono leggermente tra i due sistemi di database:

  • server_   -   prefisso per locale
  • database_   -   prefisso per il database SQL di Azure

Come riferimento visivo, la tabella seguente elenca e confronta due subset delle viste di sistema. Per brevità, i subset sono limitati ai nomi di vista che contengono anche la stringa _event. I nomi dei subset hanno prefissi diversi perché derivano dai due diversi sistemi di database.

Nome dalla versione 2017 locale Nome dal servizio cloud
server_event_notifications
server_event_session_actions
server_event_session_events
server_event_session_fields
server_event_session_targets
server_event_sessions
server_events
server_trigger_events
database_event_session_actions
database_event_session_events
database_event_session_fields
database_event_session_targets
database_event_sessions
   

I due elenchi nella tabella precedente sono aggiornati al giugno 2019. Il contenuto della tabella, tuttavia, può essere obsoleto, perché non viene aggiornato in questo articolo. Per ottenere elenchi accurati, eseguire l'istruzione T-SQL SELECT seguente. Eseguire l'istruzione SELECT due volte, una volta per ciascun sistema di database.

SELECT name
    FROM sys.all_objects
    WHERE
        (name LIKE 'database\_%' { ESCAPE '\' } OR
         name LIKE 'server\_%' { ESCAPE '\' })
        AND name LIKE '%\_event%' { ESCAPE '\' }
        AND type = 'V'
    ORDER BY name;

Vedere anche

Applicazioni livello dati
Supporto dell'applicazione livello dati per oggetti e versioni di SQL Server
Distribuire un'applicazione livello dati
Monitorare le applicazioni livello dati
 
Viste a gestione dinamica degli eventi estesi
Viste del catalogo degli eventi estesi (Transact-SQL)
 
XELite: libreria multipiattaforma per la lettura di XEvent da file XEL o flussi SQL live, rilasciata a maggio 2019.
Cmdlet di PowerShell Read-SQLXEvent, rilasciato nel giugno 2019.
SQL Mysteries: Causality tracking vs Event Sequence for XEvent Sessions (blog published April 1, 2019) (Misteri di SQL: rilevamento della causalità e sequenza di eventi per le sessioni di XEvent - Blog pubblicato l'1 aprile 2019)