Eventi estesi nel database SQL di Azure
Si applica a: Database SQL di Azure
Il set di funzionalità di eventi estesi in Azure SQL Database è un subset affidabile delle funzionalità su SQL Server e Istanza gestita di SQL di Azure.
XEvent è un nome alternativo informale utilizzato talvolta per "eventi estesi" in blog e altri percorsi informali.
Altre informazioni sugli eventi estesi sono disponibili all'indirizzo:
Prerequisiti
Questo articolo presuppone che si abbia già una certa conoscenza di:
La maggior parte della documentazione relativa agli eventi estesi si applica a SQL Server, database Azure SQL e Istanza gestita di SQL di Azure.
Un’esposizione precedente a quanto riportato di seguito è utile quando si sceglie il file evento come destinazione:
Esempi di codice
Gli articoli correlati forniscono due esempi di codice:
Codice di destinazione del buffer circolare per eventi estesi nel database SQL di Azure
- Breve script Transact-SQL semplice.
- Nell'articolo di esempio di codice viene sottolineato che, al termine di una destinazione del buffer circolare, è consigliabile rilasciarne le risorse eseguendo un'istruzione alter-drop
ALTER EVENT SESSION ... ON DATABASE DROP TARGET ...;
. Successivamente è possibile aggiungere un'altra istanza del buffer circolare daALTER EVENT SESSION ... ON DATABASE ADD TARGET ...
.
Codice di destinazione del file evento per eventi estesi nel database SQL di Azure
- Fase 1 è PowerShell per creare un contenitore di Archiviazione di Azure.
- Fase 2 è Transact-SQL che utilizza il contenitore di Archiviazione di Azure.
Differenze di Transact-SQL
Quando si esegue il comando CREATE EVENT SESSION su SQL Server, si utilizza la clausola ON SERVER . Ma in Azure SQL Database si usa invece la clausola ON DATABASE.
La clausola ON DATABASE riguarda anche i comandi Transact-SQL ALTER EVENT SESSION e DROP EVENT SESSION.
È consigliabile includere l'opzione della sessione eventi di STARTUP_STATE = ON nelle istruzioni CREATE EVENT SESSION o ALTER EVENT SESSION .
- Il valore = ON supporta un riavvio automatico dopo una riconfigurazione del database logico a causa di un failover.
Nuove viste del catalogo
La funzionalità degli eventi estesi è supportata da diverse viste del catalogo. Le viste del catalogo indicano i metadati o le definizioni di sessioni di eventi create dall'utente nel database corrente. Le viste non restituiscono informazioni sulle istanze delle sessioni di eventi attivi.
Nome della vista del catalogo | Descrizione |
---|---|
sys.database_event_session_actions | Restituisce una riga per ogni azione su ogni evento di una sessione dell'evento. |
sys.database_event_session_events | Restituisce una riga per ogni evento in una sessione di eventi. |
sys.database_event_session_fields | Restituisce una riga per ogni colonna personalizzabile impostata in modo esplicito su eventi e destinazioni. |
sys.database_event_session_targets | Restituisce una riga per ogni destinazione di evento per una sessione eventi. |
sys.database_event_sessions | Restituisce una riga per ogni sessione evento nel database. |
In Microsoft SQL Server le viste del catalogo simili hanno nomi che includono .server_ anziché .database_. Il modello di nome è simile a sys.server_event_%
.
DMV
Il database SQL di Azure include viste a gestione dinamica (DMV) che supportano gli eventi estesi. Le DMV indicano le sessioni di eventi attive .
Nome della DMV | Descrizione |
---|---|
sys.dm_xe_database_session_event_actions | Restituisce informazioni sulle azioni di sessione di evento. |
sys.dm_xe_database_session_events | Restituisce informazioni sugli eventi di sessione. |
sys.dm_xe_database_session_object_columns | Mostra i valori di configurazione per gli oggetti associati a una sessione. |
sys.dm_xe_database_session_targets | Restituisce informazioni sulle destinazioni della sessione. |
sys.dm_xe_database_sessions | Restituisce una riga per ogni sessione di eventi con ambito nel database corrente. |
In Microsoft SQL Server, le viste del catalogo simili vengono denominate senza la parte _database del nome, ad esempio:
sys.dm_xe_sessions
anzichésys.dm_xe_database_sessions
.
DMV comuni a entrambi
Per gli eventi estesi sono disponibili DMV aggiuntivi comuni a Azure SQL Database, Istanza gestita di SQL di Azure e Microsoft SQL Server:
Trovare gli eventi estesi, le azioni e le destinazioni disponibili
Per ottenere un elenco degli eventi, delle azioni e della destinazione disponibili, usare la query di esempio:
SELECT
o.object_type,
p.name AS [package_name],
o.name AS [db_object_name],
o.description AS [db_obj_description]
FROM
sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p ON p.guid = o.package_guid
WHERE
o.object_type in
(
'action', 'event', 'target'
)
ORDER BY
o.object_type,
p.name,
o.name;
Destinazioni per le sessioni di eventi del database di Azure SQL
Di seguito sono riportate le destinazioni che possono acquisire i risultati dalle sessioni di eventi in Azure SQL Database:
- Destinazione buffer circolare : contiene per un tempo breve i dati degli eventi nella memoria.
- Destinazione contatore eventi : conta tutti gli eventi che si verificano durante una sessione di eventi estesi.
- Destinazione file evento : scrive buffer completi in un contenitore di Archiviazione di Azure.
L'API Event Tracing for Windows (ETW) non è disponibile per gli eventi estesi in Azure SQL Database.
Restrizioni
Esistono alcune differenze relative alla sicurezza che si basano sull'ambiente cloud di Azure SQL Database:
- Gli eventi estesi si basano sul modello di isolamento single-tenant. Una sessione di eventi in un database non può accedere a dati o eventi da un altro database.
- Non è possibile eseguire un'istruzione
CREATE EVENT SESSION
nel contesto delmaster
database.
Modello di autorizzazione
Per eseguire un'istruzioneCREATE EVENT SESSION
, è necessario disporre dell'autorizzazione Control per il database. Il proprietario del database (dbo) dispone dell’autorizzazione controllo .
Autorizzazioni del contenitore di archiviazione
Il token della firma di accesso condiviso generato per il contenitore di Archiviazione di Azure deve specificare rwl per le autorizzazioni. Questo valore rwl fornisce le autorizzazioni seguenti:
- Lettura
- Scrittura
- Elenco
Considerazioni sulle prestazioni
Esistono scenari in cui un uso intensivo di eventi estesi può accumulare più memoria attiva di quanto è adatto per l'intero sistema. Di conseguenza, Azure SQL database imposta e modifica dinamicamente i limiti sulla quantità di memoria attiva che può essere accumulata da una sessione eventi. Molti fattori vengono utilizzati nel calcolo dinamico.
È disponibile un limite di memoria per le sessioni XEvent in Azure SQL Database:
- In database singolo Azure SQL nel modello di acquisto DTU ogni database può usare fino a 128 MB. Questo valore viene elevato a 256 MB solo nel livello Premium.
- In database Azure SQL singolo nel modello di acquisto vCore ogni database può usare fino a 128 MB.
- In un pool elastico i singoli database sono limitati dai limiti del database singolo e in totale non possono superare 512 MB.
Se si riceve un messaggio di errore che indica che è stato applicato un massimo di memoria, alcune azioni correttive da eseguire sono:
- Eseguire meno sessioni di eventi simultanee.
- Tramite le istruzioni CREATE e ALTER per le sessioni di eventi, ridurre la quantità di memoria specificata nella clausola MAX_MEMORY .
È previsto un limite per il numero di sessioni XEvent avviate in Azure SQL Database:
- In un singolo database Azure SQL il limite è 100.
- In un pool elastico il limite è 100 sessioni con ambito database per pool.
Nei pool elastici densi, l'avvio di una nuova sessione eventi estesa potrebbe non riuscire a causa di vincoli di memoria anche quando il numero totale di sessioni avviate è inferiore a 100.
Latenza di rete
La destinazione del file evento potrebbe subire una latenza di rete o errori durante il mantenimento dei dati nei BLOB di archiviazione di Azure . Altri eventi in Azure SQL Database potrebbero essere ritardati mentre attendono il completamento della comunicazione di rete. Questo ritardo può rallentare il carico di lavoro.
- Per ridurre questo rischio delle prestazioni, evitare di impostare l'opzione EVENT_RETENTION_MODE su NO_EVENT_LOSS nelle definizioni della sessione di eventi.
Collegamenti correlati
- Cmdlet di Archiviazione di Azure
- Uso di Azure PowerShell con Archiviazione di Azure
- Come usare l'archiviazione BLOB da .NET
- CREATE CREDENTIAL (Transact-SQL)
- CREATE EVENT SESSION (Transact-SQL)
- La pagina Web Aggiornamenti di Azure, con visualizzazione limitata dal parametro ai soli aggiornamenti relativi al database SQL di Azure: