Panoramica degli eventi estesi

Si applica a:SQL Serverdatabase SQL di AzureAzure SQL Istanza gestitaDatabase SQL in Microsoft Fabric

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, Istanza gestita di SQL di Azure e database SQL in Fabric. Gli Extended Events sono altamente configurabili, leggeri e si adattano bene alla scalabilità. Per altre informazioni, vedere Architettura degli Eventi estesi.

Gli Eventi estesi sostituiscono le funzionalità deprecate di Analisi SQL e SQL Server Profiler.

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

Nota

Per il database SQL di Azure, il database SQL in Fabric e l'Istanza gestita di SQL, gli esempi di codice possono differire perché i file per la event_file destinazione vengono archiviati in Archiviazione di Azure. Per altre informazioni, vedere Eventi estesi in Azure SQL.

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 fornisce 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 degli Eventi estesi

Gli eventi estesi si basano sui concetti esistenti di Event Tracing for Windows (ETW), ad esempio eventi e consumer di eventi, e introducono nuovi concetti, ad esempio azione e predicato.

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

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

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 dal motore di database e in certe condizioni, la correlazione di dati dal sistema operativo e dalle applicazioni di database. Nel caso del sistema operativo, l'output di Extended Events deve essere inviato 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. In genere, questi dati vengono 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 usati o analizzati tramite strumenti come SQL Server Management Studio, XEvent Profiler e Monitoraggio prestazioni, nonché strumenti T-SQL o da riga di comando di Windows.

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

  • Il motore di Extended Events è indipendente dal tipo di evento. 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 Motore degli Eventi estesi.
  • Gli eventi sono separati dagli utilizzatori di eventi, che in Extended Events sono chiamati destinazioni. Ciò significa che qualsiasi destinazione può ricevere qualsiasi evento. Inoltre, qualsiasi evento attivato può essere consumato automaticamente dalla destinazione, che può registrare nel log o fornire ulteriori informazioni contestuali sull'evento. Per altre informazioni, vedere Destinazioni degli 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 degli Eventi estesi.

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 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 Utilizzare la sessione system_health.

Attività degli eventi estesi

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

Descrizione attività Articolo
Utilizzare Esplora oggetti per gestire sessioni di eventi. Gestire sessioni di eventi in Esplora oggetti
Descrive come usare le destinazioni degli Eventi Estesi disponibili. Destinazioni eventi estesi
Viene descritto come visualizzare e aggiornare i dati di destinazione. Vedere dati degli eventi in SQL Server Management Studio
Descrive l'architettura delle sessioni di eventi estesi. Sessioni degli Eventi estesi
Descrive come utilizzare gli strumenti di Extended Events per creare e gestire le sessioni di Extended Events. Strumenti degli eventi estesi
Viene descritto come alterare una sessione Eventi estesi. Modificare una sessione di Eventi estesi
Viene descritto come ottenere informazioni sui campi associati agli eventi. Ottieni i campi per tutti gli eventi
Viene descritto come individuare gli eventi disponibili nei pacchetti registrati. SELECT e JOIN dalle viste di sistema per Eventi Estesi
Descrive come visualizzare gli eventi e le azioni di Extended Events equivalenti a ciascun evento di SQL Trace e alle relative colonne associate. Visualizzare gli eventi estesi equivalenti alle classi di eventi di Traccia SQL
Viene descritto come convertire uno script di Traccia SQL esistente in una sessione Eventi estesi. Convertire uno script SQL Trace esistente in una sessione di Eventi estesi
Descrive come determinare quali query detengono il blocco, il piano di esecuzione della query e lo stack Transact-SQL nel momento in cui è stato acquisito il blocco. Individuare le query che mantengono attivi i blocchi
Descrive come identificare l'origine dei blocchi. Trova gli oggetti su cui è stato applicato il maggior numero di blocchi
Descrive come usare Extended Events con Event Tracing for Windows per monitorare l'attività del sistema. Monitorare l'attività del sistema mediante gli eventi estesi
Uso delle viste del catalogo e delle viste a gestione dinamica (DMV) per gli eventi estesi SELECT e JOIN dalle viste di sistema per Eventi Estesi

Viste del catalogo di Extended Events

Gli eventi estesi offrono diverse viste del catalogo. Le viste del catalogo indicano i metadati o la definizione della sessione eventi. Per informazioni sulle istanze delle sessioni di eventi attive, vedere Viste a gestione dinamica degli eventi estesi.

Nome della vista del catalogo Descrizione
sys.database_event_session_actions Restituisce una riga per ogni azione per ogni evento di una sessione di eventi con ambito di database.
sys.database_event_session_events Restituisce una riga per ogni evento in una sessione eventi con ambito database.
sys.database_event_session_fields Restituisce una riga per ogni colonna personalizzabile impostata in modo esplicito su eventi e destinazioni di una sessione con ambito database.
sys.database_event_session_targets Restituisce una riga per ogni destinazione di evento per una sessione di eventi nell'ambito del database.
sys.database_event_sessions Restituisce una riga per ogni sessione di eventi relativa al database.

Viste a gestione dinamica di Extended Events

Gli eventi estesi offrono diverse viste di gestione dinamica (DMV). Le DMV restituiscono informazioni sulle sessioni evento attive (avviate), come le statistiche di sessione e le statistiche relative agli obiettivi.

Nome della DMV Descrizione
sys.dm_xe_database_session_event_actions Restituisce informazioni sulle azioni della sessione eventi a livello del database.
sys.dm_xe_database_session_events Restituisce informazioni sugli eventi della sessione di eventi a livello di database.
sys.dm_xe_database_session_object_columns Mostra i valori di configurazione per gli oggetti associati a una sessione con ambito database.
sys.dm_xe_database_session_targets Restituisce informazioni sulle destinazioni degli obiettivi delle sessioni evento con ambito a livello di database.
sys.dm_xe_database_sessions Restituisce una riga per ogni sessione di eventi con ambito database in esecuzione nel database corrente.

Permissions

Nel database SQL di Azure, nel database SQL in Fabric, nell'istanza gestita di SQL di Azure e in SQL Server 2022 e versioni successive, Extended Events supporta un modello di autorizzazione granulare. Le seguenti autorizzazioni possono essere concesse:

CREATE ANY DATABASE EVENT SESSION
DROP ANY DATABASE EVENT SESSION
ALTER ANY DATABASE EVENT SESSION
ALTER ANY DATABASE EVENT SESSION ADD EVENT
ALTER ANY DATABASE EVENT SESSION DROP EVENT
ALTER ANY DATABASE EVENT SESSION ADD TARGET
ALTER ANY DATABASE EVENT SESSION DROP TARGET
ALTER ANY DATABASE EVENT SESSION ENABLE
ALTER ANY DATABASE EVENT SESSION DISABLE
ALTER ANY DATABASE EVENT SESSION OPTION

Per informazioni sui controlli di ognuna di queste autorizzazioni, vedere CREATE EVENT SESSION, ALTER EVENT SESSIONe DROP EVENT SESSION.

Tutte queste autorizzazioni sono incluse nell'autorizzazione per il database, l'istanza CONTROL gestita di SQL o l'istanza di SQL Server. In database SQL di Azure, il proprietario del database (dbo), i membri del db_owner ruolo del database e gli amministratori del server logico hanno l'autorizzazione del databaseCONTROL. In Istanza gestita di SQL di Azure e in SQL Server, i membri del ruolo server sysadmin mantengono l'autorizzazione CONTROL per l'istanza.

Gli esempi di codice possono differire per il database SQL di Azure, il database SQL in Fabric e Istanza gestita di SQL

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

  • server_ - prefisso per SQL Server e Istanza gestita di Azure SQL
  • database_ - prefisso per database SQL di Azure, SQL Database in Fabric, e Istanza Gestita di SQL

Il database SQL di Azure e il database SQL in Fabric supportano solo sessioni di eventi con ambito database. SQL Server Management Studio (SSMS) supporta sessioni di eventi con ambito di database per database SQL di Azure: un nodo Eventi Estesi contenente sessioni con ambito di database appare sotto 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 di eventi con ambito server sono consigliate per Istanza gestita di SQL di Azure.

Le sessioni di eventi con ambito database non vengono visualizzate in Esplora oggetti in SSMS per Istanza gestita di SQL di Azure. In un'istanza gestita di SQL, le sessioni di eventi con ambito database possono essere interrogate e gestite solo con Transact-SQL.

Come riferimento visivo, la tabella seguente elenca e confronta due subset delle viste di catalogo. I subset hanno prefissi di nome diversi perché supportano diversi tipi di motori di database.

Nome in SQL Server e Istanza gestita di SQL di Azure Nome nel database SQL di Azure, nel database SQL in Microsoft Fabric e nell'istanza gestita di SQL di Azure
sys.server_event_session_actions
sys.server_event_session_events
sys.server_event_session_fields
sys.server_event_session_targets
sys.server_event_sessions
sys.database_event_session_actions
sys.database_event_session_events
sys.database_event_session_fields
sys.database_event_session_targets
sys.database_event_sessions