Eventi estesi nel database SQLExtended events in SQL Database

In questo argomento viene illustrato come l'implementazione di eventi estesi nel database SQL di Azure è leggermente diversa rispetto agli eventi estesi in Microsoft SQL Server.This topic explains how the implementation of extended events in Azure SQL Database is slightly different compared to extended events in Microsoft SQL Server.

  • SQL Database V12 ha acquisito la funzionalità degli eventi estesi nella seconda metà del calendario 2015.SQL Database V12 gained the extended events feature in the second half of calendar 2015.
  • SQL Server ha gli eventi estesi dal 2008.SQL Server has had extended events since 2008.
  • Il set di funzionalità degli eventi estesi nel database SQL è un subset affidabile delle funzionalità in SQL Server.The feature set of extended events on SQL Database is a robust subset of the features on SQL Server.

XEvent è un nome alternativo informale utilizzato talvolta per "eventi estesi" in blog e altri percorsi informali.XEvents is an informal nickname that is sometimes used for 'extended events' in blogs and other informal locations.

Per altre informazioni sugli eventi estesi, per il database SQL di Azure e Microsoft SQL Server, vedere l'articolo:Additional information about extended events, for Azure SQL Database and Microsoft SQL Server, is available at:

PrerequisitiPrerequisites

In questo argomento si presuppone che si dispone già di una conoscenza di:This topic assumes you already have some knowledge of:

Un’esposizione precedente a quanto riportato di seguito è utile quando si sceglie il file evento come destinazione:Prior exposure to the following items is helpful when choosing the Event File as the target:

Esempi di codiceCode samples

Gli argomenti correlati forniscono due esempi di codice:Related topics provide two code samples:

Differenze di Transact-SQLTransact-SQL differences

  • Quando si esegue il comando CREATE EVENT SESSION su SQL Server, si utilizza la clausola ON SERVER .When you execute the CREATE EVENT SESSION command on SQL Server, you use the ON SERVER clause. Ma nel database SQL si utilizza invece la clausola ON DATABASE .But on SQL Database you use the ON DATABASE clause instead.

  • La clausola ON DATABASE riguarda anche i comandi Transact-SQL ALTER EVENT SESSION e DROP EVENT SESSION.The ON DATABASE clause also applies to the ALTER EVENT SESSION and DROP EVENT SESSION Transact-SQL commands.

  • Una procedura consigliata consiste nell'includere l'opzione della sessione eventi di STARTUP_STATE = ON nelle istruzioni CREATE EVENT SESSION o ALTER EVENT SESSION.A best practice is to include the event session option of STARTUP_STATE = ON in your CREATE EVENT SESSION or ALTER EVENT SESSION statements.

    • Il valore = ON supporta un riavvio automatico dopo una riconfigurazione del database logico a causa di un failover.The = ON value supports an automatic restart after a reconfiguration of the logical database due to a failover.

Nuove viste del catalogoNew catalog views

La funzionalità degli eventi estesi è supportata da diverse viste del catalogo.The extended events feature is supported by several catalog views. Le viste del catalogo indicano i metadati o le definizioni di sessioni di eventi create dall'utente nel database corrente.Catalog views tell you about metadata or definitions of user-created event sessions in the current database. Le viste non restituiscono informazioni sulle istanze delle sessioni di eventi attivi.The views do not return information about instances of active event sessions.

Nome dellaName of
vista del catalogocatalog view
DescrizioneDescription
sys.database_event_session_actionssys.database_event_session_actions Restituisce una riga per ogni azione su ogni evento di una sessione di eventi.Returns a row for each action on each event of an event session.
sys.database_event_session_eventssys.database_event_session_events Restituisce una riga per ogni evento in una sessione di eventi.Returns a row for each event in an event session.
sys.database_event_session_fieldssys.database_event_session_fields Restituisce una riga per ogni colonna personalizzabile impostata in modo esplicito su eventi e destinazioni.Returns a row for each customize-able column that was explicitly set on events and targets.
sys.database_event_session_targetssys.database_event_session_targets Restituisce una riga per ogni destinazione di evento per una sessione di eventi.Returns a row for each event target for an event session.
sys.database_event_sessionssys.database_event_sessions Restituisce una riga per ogni sessione di eventi nel database SQL del database.Returns a row for each event session in the SQL Database database.

In Microsoft SQL Server le viste del catalogo simili hanno nomi che includono .server_ anziché .database_.In Microsoft SQL Server, similar catalog views have names that include .server_ instead of .database_. Il modello del nome è simile a sys.server_event_%.The name pattern is like sys.server_event_%.

DMVNew dynamic management views (DMVs)

Il database SQL di Azure include viste a gestione dinamica (DMV) che supportano gli eventi estesi.Azure SQL Database has dynamic management views (DMVs) that support extended events. Le DMV indicano le sessioni di eventi attive .DMVs tell you about active event sessions.

Nome della DMVName of DMV DescrizioneDescription
sys.dm_xe_database_session_event_actionssys.dm_xe_database_session_event_actions Restituisce informazioni sulle azioni della sessione di eventi.Returns information about event session actions.
sys.dm_xe_database_session_eventssys.dm_xe_database_session_events Restituisce informazioni sugli eventi della sessione.Returns information about session events.
sys.dm_xe_database_session_object_columnssys.dm_xe_database_session_object_columns Mostra i valori di configurazione per gli oggetti associati a una sessione.Shows the configuration values for objects that are bound to a session.
sys.dm_xe_database_session_targetssys.dm_xe_database_session_targets Restituisce informazioni sulle destinazioni della sessione.Returns information about session targets.
sys.dm_xe_database_sessionssys.dm_xe_database_sessions Restituisce una riga per ogni sessione di eventi con ambito nel database corrente.Returns a row for each event session that is scoped to the current database.

In Microsoft SQL Server le viste del catalogo simili sono denominate senza la parte del nome _database, ad esempio:In Microsoft SQL Server, similar catalog views are named without the _database portion of the name, such as:

  • sys.dm_xe_sessions, anziché il nomesys.dm_xe_sessions, instead of name
    sys.dm_xe_database_sessions.sys.dm_xe_database_sessions.

DMV comuni a entrambiDMVs common to both

Per gli eventi estesi sono disponibili DMV aggiuntive comuni a Microsoft SQL Server e Azure SQL Database:For extended events there are additional DMVs that are common to both Azure SQL Database and Microsoft SQL Server:

  • sys.dm_xe_map_valuessys.dm_xe_map_values
  • sys.dm_xe_object_columnssys.dm_xe_object_columns
  • sys.dm_xe_objectssys.dm_xe_objects
  • sys.dm_xe_packagessys.dm_xe_packages

Trovare gli eventi estesi, le azioni e le destinazioni disponibiliFind the available extended events, actions, and targets

È possibile eseguire un semplice SELECT di SQL per ottenere un elenco di eventi, azioni e destinazioni disponibili.You can run a simple SQL SELECT to obtain a list of the available events, actions, and target.

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 SQLTargets for your SQL Database event sessions

Di seguito si trovano le destinazioni che possono acquisire i risultati dalle sessioni di eventi nel database SQL:Here are targets that can capture results from your event sessions on SQL Database:

L’API Tracciamento eventi per Windows (ETW) non è disponibile per gli eventi estesi nel database SQL.The Event Tracing for Windows (ETW) API is not available for extended events on SQL Database.

RestrizioniRestrictions

Esistono un paio di differenze relative alla sicurezza adatte all'ambiente cloud del database SQL:There are a couple of security-related differences befitting the cloud environment of SQL Database:

  • Gli eventi estesi si basano sul modello di isolamento single-tenant.Extended events are founded on the single-tenant isolation model. Una sessione di eventi in un database non può accedere a dati o eventi da un altro database.An event session in one database cannot access data or events from another database.
  • Non è possibile emettere un'istruzione CREATE EVENT SESSION nel contesto del database master.You cannot issue a CREATE EVENT SESSION statement in the context of the master database.

Modello di autorizzazionePermission model

È necessario avere l'autorizzazione Controllo nel database per emettere un'istruzione CREATE EVENT SESSION.You must have Control permission on the database to issue a CREATE EVENT SESSION statement. Il proprietario del database (dbo) dispone dell’autorizzazione controllo .The database owner (dbo) has Control permission.

Autorizzazioni del contenitore di archiviazioneStorage container authorizations

Il token della firma di accesso condiviso generato per il contenitore di Archiviazione di Azure deve specificare rwl per le autorizzazioni.The SAS token you generate for your Azure Storage container must specify rwl for the permissions. Questo valore rwl fornisce le autorizzazioni seguenti:The rwl value provides the following permissions:

  • LetturaRead
  • ScritturaWrite
  • ElencoList

Considerazioni sulle prestazioniPerformance considerations

Esistono scenari in cui un uso intensivo di eventi estesi può accumulare più memoria attiva di quanto è adatto per l'intero sistema.There are scenarios where intensive use of extended events can accumulate more active memory than is healthy for the overall system. Pertanto il sistema di Azure SQL Database imposta e regola in modo dinamico i limiti sulla quantità di memoria attiva che può essere accumulata da una sessione di eventi.Therefore the Azure SQL Database system dynamically sets and adjusts limits on the amount of active memory that can be accumulated by an event session. Molti fattori vengono utilizzati nel calcolo dinamico.Many factors go into the dynamic calculation.

Se si riceve un messaggio di errore che indica che è stato applicato un massimo di memoria, alcune azioni correttive da eseguire sono:If you receive an error message that says a memory maximum was enforced, some corrective actions you can take are:

  • Eseguire meno sessioni di eventi simultanee.Run fewer concurrent event sessions.
  • Tramite le istruzioni CREATE e ALTER per le sessioni di eventi, ridurre la quantità di memoria specificata nella clausola MAX_MEMORY.Through your CREATE and ALTER statements for event sessions, reduce the amount of memory you specify on the MAX_MEMORY clause.

Latenza di reteNetwork latency

La destinazione del file evento potrebbe subire una latenza di rete o errori durante il mantenimento dei dati nei BLOB di archiviazione di Azure .The Event File target might experience network latency or failures while persisting data to Azure Storage blobs. Altri eventi nel database SQL potrebbero subire un ritardo mentre rimangono in attesa del completamento della comunicazione di rete.Other events in SQL Database might be delayed while they wait for the network communication to complete. Questo ritardo può rallentare il carico di lavoro.This delay can slow your workload.

  • Per ridurre questo rischio delle prestazioni, evitare di impostare l'opzione EVENT_RETENTION_MODE su NO_EVENT_LOSS nelle definizioni della sessione di eventi.To mitigate this performance risk, avoid setting the EVENT_RETENTION_MODE option to NO_EVENT_LOSS in your event session definitions.

Altri argomenti con esempi di codice per gli eventi estesi sono disponibili ai collegamenti seguenti.Other code sample topics for extended events are available at the following links. È comunque necessario controllare regolarmente qualsiasi esempio per verificare se è destinato a Microsoft SQL Server o al database SQL di Azure.However, you must routinely check any sample to see whether the sample targets Microsoft SQL Server versus Azure SQL Database. È quindi possibile decidere se sono necessarie alcune modifiche per eseguire l'esempio.Then you can decide whether minor changes are needed to run the sample.