Panoramica degli eventi estesi

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

L'architettura degli eventi estesi (XEvents) consente agli utenti di raccogliere tutti i dati necessari per monitorare, identificare o risolvere i problemi relativi alle prestazioni in SQL Server, database SQL di Azure e Istanza gestita di SQL di Azure. Gli eventi estesi sono altamente configurabili, leggeri e scalabili correttamente. Per altre informazioni, vedere Architettura degli eventi estesi.

Gli eventi estesi sostituiscono le funzionalità deprecate di Traccia SQL e SQL Server Profiler.

Per iniziare a usare gli eventi estesi, usare Avvio rapido: Eventi estesi.

Vantaggi degli eventi estesi di

Gli eventi estesi sono un sistema di monitoraggio delle prestazioni leggero che usa risorse di sistema minime, fornendo al tempo stesso una visualizzazione dettagliata e approfondita del motore di database. SQL Server Management Studio offre un'interfaccia utente grafica per gli eventi estesi per creare, modificare ed eliminare sessioni di eventi e per visualizzare e analizzare i dati della sessione. Per altre informazioni sul supporto degli eventi estesi in Management Studio, vedere:

Concetti relativi agli eventi estesi

Gli eventi estesi si basa sui concetti esistenti di Event Tracing for Windows, ad esempio l'evento e il consumer di eventi, e introduce nuovi concetti, ad esempio azione e predicato.

Nella tabella seguente vengono forniti riferimenti alla documentazione per comprendere i concetti in Eventi estesi.

Articolo Descrizione
Pacchetti di eventi estesi 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 per gli eventi estesi Vengono descritti i consumer di eventi che possono ricevere dati durante una sessione dell'evento.
Motore eventi estesi Viene descritto il motore che implementa e gestisce una sessione degli eventi estesi.
Sessioni di eventi estesi Viene descritta la sessione Eventi estesi.

Architettura degli eventi estesi

Gli eventi estesi sono un nome per un sistema generale di gestione degli eventi per i sistemi server. L'infrastruttura degli eventi estesi supporta la correlazione dei dati dal motore di database e, in determinate condizioni, la correlazione dei 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 usando le 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 in un prodotto a scopo di debug. I dati vengono utilizzati o analizzati usando strumenti come SQL Server Management Studio, XEvent Profiler e Monitor prestazioni e T-SQL o gli strumenti da riga di comando di Windows.

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

  • Il motore degli eventi estesi è agnostico in termini di eventi. Il motore può associare qualsiasi evento a qualsiasi destinazione, perché il motore non è vincolato dal contenuto dell'evento. Per altre informazioni sul motore eventi estesi, vedere Motore eventi estesi.
  • 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 altre informazioni, vedere Destinazioni per gli eventi estesi.
  • 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 altre informazioni, vedere Pacchetti di eventi estesi.

Gli eventi estesi possono generare in modo sincrono i dati degli eventi (ed elaborarli in modo asincrono), che offre 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 completamente configurabile che usa 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 Usare la sessione di system_health.

Attività Eventi estesi

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

Descrizione attività Articolo
Utilizzare Esplora oggetti per gestire sessioni di eventi. Gestire sessioni di eventi in Esplora oggetti
Viene descritto come creare una sessione di eventi estesi. Sessioni di eventi estesi
Viene descritto come visualizzare e aggiornare i dati di destinazione. Visualizzare i dati degli eventi in SQL Server Management Studio
Viene descritto come utilizzare gli strumenti degli eventi estesi per creare e gestire sessioni di eventi estesi di . 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. Istruzioni SELECT e JOIN da viste di sistema per eventi estesi in SQL Server
Viene descritto come individuare le destinazioni degli eventi estesi disponibili nei pacchetti registrati. Destinazioni per gli eventi estesi
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 usa la ADD TARGET clausola in CREATE EVENT SESSION o ALTER EVENT SESSION istruzioni . Destinazioni per gli eventi estesi
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 contengono il blocco, il piano della query e lo stack Transact-SQL al momento dell'esecuzione del blocco. Individuare le query che mantengono attivi i blocchi
Viene descritto come identificare l'origine dei blocchi. 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 di viste del catalogo e 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 T-SQL seguente per restituire tutti gli eventi possibili 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
INNER JOIN sys.dm_xe_object_columns AS col2
    ON col2.object_name = obj1.name
ORDER BY obj1.name,
    col2.name

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

Alcuni esempi di codice Transact-SQL scritti per SQL Server richiedono piccole modifiche da eseguire in Azure. Una categoria di tali esempi di codice prevede viste del catalogo i cui prefissi di nome differiscono a seconda del tipo di motore di database:

  • server_ - prefisso per SQL Server e Istanza gestita di SQL di Azure
  • database_ - prefisso per database SQL di Azure e Istanza gestita di SQL

database SQL di Azure supporta solo sessioni di eventi con ambito database. SQL Server Management Studio (SSMS) supporta completamente le sessioni di eventi con ambito database per database SQL di Azure: un nodo Eventi estesi contenente sessioni con ambito database viene visualizzato in ogni database in Esplora oggetti.

Istanza gestita di SQL di Azure supporta sia sessioni con ambito database che sessioni con ambito server. SSMS supporta completamente le sessioni con ambito server per Istanza gestita di SQL: un nodo Eventi estesi contenente tutte le sessioni con ambito server viene visualizzato nella cartella Gestione per ogni istanza gestita in Esplora oggetti.

Nota

Le sessioni con ambito server sono consigliate per le istanze gestite. Le sessioni con ambito database non vengono visualizzate in Esplora oggetti in SSMS per Istanza gestita di SQL di Azure. Le sessioni con ambito database possono essere sottoposte a query e gestite solo con Transact-SQL quando si usa un'istanza gestita.

Ad esempio, la tabella seguente elenca e confronta due subset di viste del catalogo. Per brevità, i subset sono limitati ai nomi di vista che contengono anche la stringa _event. I subset hanno prefissi di nome diversi perché supportano tipi di motore di database diversi.

Nome in SQL Server e Istanza gestita di SQL di Azure Nome in database SQL di Azure e Istanza gestita di SQL di Azure
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 stati accurati a partire da marzo 2022. Per un elenco aggiornato, eseguire l'istruzione Transact-SQL SELECT seguente:

SELECT name
    FROM sys.all_objects
    WHERE
        (name LIKE 'database[_]%' OR
         name LIKE 'server[_]%' )
        AND name LIKE '%[_]event%'
        AND type = 'V'
        AND SCHEMA_NAME(schema_id) = 'sys'
    ORDER BY name;