ALTER EVENT SESSION (Transact-SQL)
Si applica a: SQL Server Istanza gestita di SQL di Azure
Consente di avviare o arrestare una sessione eventi oppure di modificare la configurazione di una sessione eventi.
Convenzioni relative alla 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
Termine | Definizione |
---|---|
event_session_name | Nome di una sessione dell'evento esistente. |
STATE = START | FERMARSI | 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 è l'identificatore univoco globale (GUID) del modulo contenente l'evento. - event_package_name è il pacchetto che contiene l'oggetto dell'azione. - event_name è l'oggetto dell'evento. Gli eventi vengono visualizzati nella vista sys.dm_xe_objects come object_type "event". |
SET { event_customizable_attribute= <value> [ ,...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 dell'evento, dove: - event_module_guid è l'identificatore univoco globale (GUID) del modulo contenente l'evento. - event_package_name è il pacchetto che contiene l'oggetto dell'azione. - action_name è l'oggetto dell'azione. Le azioni vengono visualizzate nella vista sys.dm_xe_objects come object_type "action". |
WHERE <predicate_expression> | 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'elaborazione dell'azione e della destinazione non si verifica per questo evento. Le espressioni di predicato sono limitate a 3.000 caratteri, che limitano gli argomenti stringa. |
event_field_name | Nome del campo relativo all'evento che consente di identificare l'origine del predicato. |
[event_module_guid].event_package_name.predicate_source_name | Nome dell'origine del predicato globale dove: - event_module_guid è l'identificatore univoco globale (GUID) del modulo contenente l'evento. - event_package_name è il pacchetto che contiene l'oggetto del 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 del predicato da associare all'evento, dove: - event_module_guid è l'identificatore univoco globale (GUID) del modulo contenente l'evento. - event_package_name è il pacchetto che contiene l'oggetto del predicato. - predicate_compare_name è un'origine globale definita nella vista sys.dm_xe_objects come object_type 'pred_compare'. |
DROP EVENT <event_specifier> | Elimina l'evento identificato da <event_specifier>. <event_specifier> deve essere valido nella sessione dell'evento. |
ADD TARGET <event_target_specifier> | Associa la destinazione identificata da <event_target_specifier> alla sessione dell'evento. |
[event_module_guid].event_package_name.target_name | Nome di una destinazione nella sessione dell'evento dove: - event_module_guid è l'identificatore univoco globale (GUID) del modulo contenente l'evento. - event_package_name è il pacchetto che contiene l'oggetto dell'azione. - target_name è l'azione. Le azioni vengono visualizzate nella vista sys.dm_xe_objects come object_type "target". |
SET { target_parameter_name= <value> [, ...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: se si usa la destinazione del buffer circolare, è consigliabile impostare il parametro di destinazione max_memory su 2.048 kilobyte (KB) per evitare possibili troncamenti dei dati dell'output XML. Per altre informazioni sull'uso dei diversi tipi di destinazione, vedere Destinazioni degli eventi estesi di SQL Server. |
DROP TARGET <event_target_specifier> | Elimina la destinazione identificata da <event_target_specifier>. <event_target_specifier> deve essere valido nella sessione dell'evento. |
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, dalla partizione 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 siano 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. Per le destinazioni dei file di eventi in database SQL di Azure, si comporta come ALLOW_SINGLE_EVENT_LOSS. Per altre informazioni, vedere EVENT_RETENTION_MODE. |
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. Nota: 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. MAX_EVENT_SIZE deve essere impostato solo per consentire singoli eventi di dimensioni maggiori di MAX_MEMORY; impostandolo su meno di MAX_MEMORY genera un errore. size è un numero intero e può essere espresso in kilobyte (KB) o megabyte (MB). Se size è espresso 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 All'interno dell'istanza di SQL Server viene creato un unico set di buffer. PER NODE: viene creato un set di buffer per ogni nodo NUMA. PER CPU: viene creato un set di buffer per ogni CPU. |
TRACK_CAUSALITY = { ON | OFF } | Specifica se viene tenuta traccia della causalità. Se abilitato, la causalità consente la correlazione di eventi correlati in diverse connessioni server. |
STARTUP_STATE = { ON | OFF } | Specifica se avviare automaticamente o meno questa sessione dell'evento all'avvio di SQL Server. Se STARTUP_STATE=ON la sessione eventi viene avviata solo se SQL Server viene arrestato e riavviato. ON= La sessione dell'evento ha inizio all'avvio. OFF = La sessione dell'evento non ha inizio all'avvio. |
Osservazioni:
Gli ADD
argomenti e DROP
non possono essere usati nella stessa istruzione.
Autorizzazioni
È necessaria l'autorizzazione ALTER ANY EVENT SESSION
.
Suggerimento
SQL Server 2022 ha introdotto una serie di nuove autorizzazioni più granulari per gli eventi estesi. Per altre informazioni, vedere Blog: Nuove autorizzazioni granulari per SQL Server 2022 e Azure SQL per migliorare la conformità con PoLP.
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