Condividi tramite


ALTER EVENT SESSION (Transact-SQL)

Avvia o arresta una sessione eventi o modifica una configurazione della sessione eventi

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

ALTER EVENT SESSION event_session_name
ON SERVER
{
    [ [ {  <add_drop_event> [ ,...n] }   
       | { <add_drop_event_target> [ ,...n ] } ] 
    [ WITH ( <event_session_options> [ ,...n ] ) ]
    ]
    | [ STATE = { START | STOP } ]
}

<add_drop_event>::=
{
    [ ADD EVENT <event_specifier> 
         [ ( { 
                 [ SET { event_customizable_attribute = <value> [ ,...n ] } ]
                 [ ACTION ( { [event_module_guid].event_package_name.action_name [ ,...n ] } ) ]
                 [ WHERE <predicate_expression> ]
        } ) ]
   ] 
   | DROP EVENT <event_specifier> }

<event_specifier> ::=
{
[event_module_guid].event_package_name.event_name
}

<predicate_expression> ::= 
{
    [ NOT ] <predicate_factor> | {( <predicate_expression> ) } 
    [ { AND | OR } [ NOT ] { <predicate_factor> | ( <predicate_expression> ) } ] 
    [ ,...n ]
}
 
<predicate_factor>::= 
{
    <predicate_leaf> | ( <predicate_expression> )
}

<predicate_leaf>::=
{
      <predicate_source_declaration> { = | < > | ! = | > | > = | < | < = } <value> 
    | [event_module_guid].event_package_name.predicate_compare_name ( <predicate_source_declaration>, <value> ) 
}

<predicate_source_declaration>::= 
{
    event_field_name | ( [event_module_guid].event_package_name.predicate_source_name )
}

<value>::= 
{
    number | 'string'
}

<add_drop_event_target>::=
{
    ADD TARGET <event_target_specifier>
        [ ( SET { target_parameter_name = <value> [ ,...n] } ) ]
    | DROP TARGET <event_target_specifier>
}

<event_target_specifier>::=
{
    [event_module_guid].event_package_name.target_name
}

<event_session_options>::=
{
    [    MAX_MEMORY = size [ KB | MB ] ]
    [ [,] EVENT_RETENTION_MODE = { ALLOW_SINGLE_EVENT_LOSS | ALLOW_MULTIPLE_EVENT_LOSS | NO_EVENT_LOSS } ]
    [ [,] MAX_DISPATCH_LATENCY = { seconds SECONDS | INFINITE } ]
    [ [,] MAX_EVENT_SIZE = size [ KB | MB ] ]
    [ [,] MEMORY_PARTITION_MODE = { NONE | PER_NODE | PER_CPU } ]
    [ [,] TRACK_CAUSALITY = { ON | OFF } ]
    [ [,] STARTUP_STATE = { ON | OFF } ]
}

Argomenti

Nome

Definizione

event_session_name

Nome di una sessione dell'evento esistente.

STATE = START | STOP

Avvia o arresta la sessione dell'evento. Questo argomento è valido solo quando ALTER EVENT SESSION è applicato a un oggetto della sessione dell'evento.

ADD EVENT <event_specifier>

Associa l'evento identificato da <event_specifier>con la sessione dell'evento.

[event_module_guid].event_package_name.event_name

Nome di un evento in un pacchetto dell'evento dove:

  • event_module_guid è il GUID del modulo contenente l'evento.

  • event_package_name è il pacchetto che contiene l'oggetto azione.

  • event_name è l'oggetto evento.

Gli eventi vengono visualizzati nella vista sys.dm_xe_objects come evento object_type.

SET { event_customizable_attribute = <valore> [ ,...n] }

Specifica gli attributi personalizzabili per l'evento. Gli attributi personalizzabili vengono visualizzati nella vista sys.dm_xe_object_columns come column_type 'customizable' e object_name = event_name.

ACTION ( { [event_module_guid].event_package_name.action_name [ ,...n] } )

Azione da associare alla sessione eventi, dove:

  • event_module_guid è il GUID del modulo contenente l'evento.

  • event_package_name è il pacchetto che contiene l'oggetto azione.

  • action_name è l'oggetto azione.

Le azioni vengono visualizzate nella vista sys.dm_xe_objects come azione object_type.

WHERE <espressione_predicato>

Indica l'espressione del predicato utilizzata per determinare se un evento deve essere elaborato. Se <predicate_expression> è True, l'evento viene elaborato ulteriormente dalle azioni e dalle destinazioni della sessione. Se <predicate_expression> è False, l'evento viene eliminato dalla sessione prima di essere elaborato dalle azioni e dalle destinazioni della sessione. Le espressioni del predicato possono essere composte da massimo 3000 caratteri, che costituisce un limite per gli argomenti di tipo stringa.

event_field_name

Nome del campo relativo all'evento che identifica l'origine del predicato.

[event_module_guid].event_package_name.predicate_source_name

Nome dell'origine del predicato globale dove:

  • event_module_guid è il GUID del modulo contenente l'evento.

  • event_package_name è il pacchetto che contiene l'oggetto predicato.

  • predicate_source_name è definito nella vista sys.dm_xe_objects come object_type 'pred_source'

[event_module_guid].event_package_name.predicate_compare_name

Nome dell'oggetto predicato da associare all'evento, dove:

  • event_module_guid è il GUID del modulo contenente l'evento.

  • event_package_name è il pacchetto che contiene l'oggetto predicato.

  • predicate_compare_name è un'origine globale definita nella vista sys.dm_xe_objects come object_type 'pred_compare'.

DROP EVENT <identificatore_evento>

Elimina l'evento identificato da <event_specifier>. <identificatore_evento> deve essere valido nella sessione eventi.

ADD TARGET <event_target_specifier>

Associa la destinazione identificata da <event_target_specifier>con la sessione dell'evento.

[event_module_guid].event_package_name.target_name

Nome di una destinazione nella sessione dell'evento dove:

  • event_module_guid è il GUID del modulo contenente l'evento.

  • event_package_name è il pacchetto che contiene l'oggetto azione.

  • target_name è l'azione. Le azioni vengono visualizzate nella vista sys.dm_xe_objects come destinazione object_type.

SET { target_parameter_name = <valore> [, ...n] }

Imposta un parametro di destinazione. I parametri di destinazione vengono visualizzati nella vista sys.dm_xe_object_columns come column_type 'customizable' e object_name = target_name.

Nota importanteImportante
Se si utilizza il buffer circolare come destinazione, si consiglia di impostare il parametro di destinazione max_memory su 2048 kilobyte (KB) per evitare il possibile troncamento dei dati dell'output XML. Per ulteriori informazioni sui casi in cui è possibile utilizzare i diversi tipi di destinazione, vedere Destinazioni degli eventi estesi di SQL Server.

DROP TARGET <event_target_specifier>

Elimina la destinazione identificata da <identificatore_destinazione_evento>. <identificatore_destinazione_evento> deve essere valido nella sessione eventi.

WITH ( <opzioni_sessione_eventi> [ ,...n] )

Specifica le opzioni da utilizzare con la sessione eventi.

MAX_MEMORY= size [ KB | MB ]

La quantità di memoria allocata alla sessione per la memorizzazione degli eventi nel buffer. Il valore predefinito è 4 MB. size è un numero intero e può essere espresso in kilobyte (KB) o in megabyte (MB). La memoria allocata per le destinazioni asincrone è separata da questo valore.

EVENT_RETENTION_MODE = { ALLOW_SINGLE_EVENT_LOSS | ALLOW_MULTIPLE_EVENT_LOSS | NO_EVENT_LOSS }

Specifica la modalità di memorizzazione dell'evento da utilizzare per la gestione della perdita di eventi.

ALLOW_SINGLE_EVENT_LOSS

Un evento può essere perso dalla sessione. Un evento singolo viene eliminato solo quando tutti i buffer dell'evento sono pieni. La perdita di un singolo evento i buffer sono pieni garantisce un livello accettabile delle prestazioni di SQL Server, riducendo al minimo il rischio di perdita dei dati nel flusso di eventi elaborati.

ALLOW_MULTIPLE_EVENT_LOSS

È possibile che vengano persi i buffer dell'evento pieni contenenti più eventi. Il numero di eventi persi dipende dalla dimensione della memoria allocata alla sessione, dal partizionamento della memoria e dalla dimensione degli eventi nel buffer. Questa opzione riduce al minimo l'impatto sulle prestazioni dei server quando i buffer degli eventi vengono riempiti rapidamente, ma numerosi eventi della sessione possono andare persi.

NO_EVENT_LOSS

Non è consentita alcuna perdita di eventi. Questa opzione assicura che tutti gli eventi generati vengano mantenuti. L'utilizzo di questa opzione forza tutte le attività che attivano eventi ad aspettare fino a che lo spazio è disponibile in un buffer degli eventi. Questo può condurre a problemi di prestazione mentre la sessione dell'evento è attiva. Le connessioni utente potrebbero bloccarsi in attesa che gli eventi vengano scaricati dal buffer.

MAX_DISPATCH_LATENCY = { seconds SECONDS | INFINITE }

Specifica il tempo necessario all'esecuzione del buffer degli eventi nella memoria prima che vengano resi disponibili nelle destinazioni della sessione. Il valore di latenza minimo è 1 secondo. È tuttavia possibile utilizzare il valore 0 per specificare una latenza infinita. Per impostazione predefinita, questo valore è impostato su 30 secondi.

seconds SECONDS

Tempo di attesa, espresso in secondi, prima che venga avviato lo scaricamento dei buffer alle destinazioni. seconds è un numero intero.

INFINITE

Scarica i buffer nelle destinazioni solo quando i buffer sono pieni o alla chiusura della sessione dell'evento.

NotaNota
MAX_DISPATCH_LATENCY = 0 SECONDS è equivalente a MAX_DISPATCH_LATENCY = INFINITE.

MAX_EVENT_SIZE = size [ KB | MB ]

Specifica la dimensione massima consentita per gli eventi. Il valore di MAX_EVENT_SIZE deve essere impostato solo per consentire singoli eventi di dimensioni superiori a quelle indicate da MAX_MEMORY. Se viene impostato un valore inferiore a quello di MAX_MEMORY, viene generato un errore. size è un numero intero e può essere espresso in kilobyte (KB) o in megabyte (MB). Se size viene indicato in kilobyte, la dimensione minima consentita è di 64 KB. Quando viene impostato MAX_EVENT_SIZE, vengono creati due buffer con dimensioni pari a size in aggiunta a MAX_MEMORY. Ciò significa che la memoria totale utilizzata per la memorizzazione degli eventi nel buffer è MAX_MEMORY + 2 * MAX_EVENT_SIZE.

MEMORY_PARTITION_MODE ={ NONE | PER_NODE | PER_CPU }

Specifica la posizione di creazione dei buffer dell'evento.

NONE

Nell'istanza di SQL Server viene creato un unico set di buffer.

PER_NODEViene creato un set di buffer per ogni nodo NUMA. Per ulteriori informazioni, vedere Informazioni sull'architettura NUMA (Non-Uniform Memory Access).
PER_CPUViene creato un set di buffer per CPU.

TRACK_CAUSALITY ={ ON | OFF }

Specifica se la causalità viene registrata. Se attivato, la causalità consente la correlazione di eventi correlati in diverse connessioni server.

STARTUP_STATE ={ ON | OFF }

Specifica se avviare automaticamente questa sessione eventi all'avvio di SQL Server.

NotaNota
Se STARTUP_STATE = ON, la sessione eventi si avvierà solo se SQL Server viene interrotto riavviato.
TermineDefinizione
ONLa sessione dell'evento ha inizio all'avvio.
OFFLa sessione dell'evento non ha inizio all'avvio.

Osservazioni

Non è possibile utilizzare gli argomenti ADD e DROP nella stessa istruzione.

Autorizzazioni

È richiesta l'autorizzazione CONTROL SERVER.

Esempi

Nell'esempio seguente viene avviata una sessione dell'evento, vengono ottenute alcune statistiche della sessione attiva e infine vengono aggiunti due eventi alla sessione esistente.

-- Start the event session
ALTER EVENT SESSION test_session
ON SERVER
STATE = start
GO
-- Obtain live session statistics 
SELECT * FROM sys.dm_xe_sessions
SELECT * FROM sys.dm_xe_session_events
GO

-- Add new events to the session
ALTER EVENT SESSION test_session ON SERVER
ADD EVENT sqlserver.database_transaction_begin,
ADD EVENT sqlserver.database_transaction_end
GO