MENGUBAH SESI PERISTIWA (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Memulai atau menghentikan sesi peristiwa atau mengubah konfigurasi sesi peristiwa.

Konvensi sintaks transact-SQL

Sintaksis

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 } ]  
}  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

Term Definisi
event_session_name Adalah nama sesi peristiwa yang ada.
STATE = MULAI | STOP Memulai atau menghentikan sesi peristiwa. Argumen ini hanya valid ketika ALTER EVENT SESSION diterapkan ke objek sesi peristiwa.
TAMBAHKAN event_specifier PERISTIWA <> Mengaitkan peristiwa yang diidentifikasi oleh <event_specifier>dengan sesi peristiwa.
[event_module_guid].event_package_name.event_name Adalah nama peristiwa dalam paket peristiwa, di mana:

- event_module_guid adalah GUID untuk modul yang berisi peristiwa.
- event_package_name adalah paket yang berisi objek tindakan.
- event_name adalah objek peristiwa.

Peristiwa muncul di tampilan sys.dm_xe_objects sebagai object_type 'peristiwa'.
SET { event_customizable_attribute= <nilai> [ ,...n] } Menentukan atribut yang dapat disesuaikan untuk peristiwa tersebut. Atribut yang dapat disesuaikan muncul dalam tampilan sys.dm_xe_object_columns sebagai column_type 'dapat disesuaikan' dan object_name = event_name.
ACTION ( { [event_module_guid].event_package_name.action_name [ ,...n] } ) Adalah tindakan untuk mengaitkan dengan sesi peristiwa, di mana:

- event_module_guid adalah GUID untuk modul yang berisi peristiwa.
- event_package_name adalah paket yang berisi objek tindakan.
- action_name adalah objek tindakan.

Tindakan muncul dalam tampilan sys.dm_xe_objects sebagai object_type 'tindakan'.
WHERE <predicate_expression> Menentukan ekspresi predikat yang digunakan untuk menentukan apakah suatu peristiwa harus diproses. Jika <predicate_expression> benar, peristiwa diproses lebih lanjut oleh tindakan dan target untuk sesi tersebut. Jika <predicate_expression> salah, peristiwa dihilangkan oleh sesi sebelum diproses oleh tindakan dan target untuk sesi tersebut. Ekspresi predikat dibatasi hingga 3000 karakter, yang membatasi argumen string.
event_field_name Adalah nama bidang peristiwa yang mengidentifikasi sumber predikat.
[event_module_guid].event_package_name.predicate_source_name Adalah nama sumber predikat global di mana:

- event_module_guid adalah GUID untuk modul yang berisi peristiwa.
- event_package_name adalah paket yang berisi objek predikat.
- predicate_source_name didefinisikan dalam tampilan sys.dm_xe_objects sebagai object_type 'pred_source'.
[event_module_guid].event_package_name.predicate_compare_name Adalah nama objek predikat untuk dikaitkan dengan peristiwa, di mana:

- event_module_guid adalah GUID untuk modul yang berisi peristiwa.
- event_package_name adalah paket yang berisi objek predikat.
- predicate_compare_name adalah sumber global yang ditentukan dalam tampilan sys.dm_xe_objects sebagai object_type 'pred_compare'.
HILANGKAN event_specifier PERISTIWA <> Menghilangkan peristiwa yang diidentifikasi oleh <event_specifier>. <> event_specifier harus valid dalam sesi peristiwa.
MENAMBAHKAN event_target_specifier TARGET <> Mengaitkan target yang diidentifikasi oleh <event_target_specifier>dengan sesi peristiwa.
[event_module_guid].event_package_name.target_name Adalah nama target dalam sesi peristiwa, di mana:

- event_module_guid adalah GUID untuk modul yang berisi peristiwa.
- event_package_name adalah paket yang berisi objek tindakan.
- target_name adalah tindakannya. Tindakan muncul dalam tampilan sys.dm_xe_objects sebagai object_type 'target'.
SET { target_parameter_name= <value> [, ...n] } Menetapkan parameter target. Parameter target muncul dalam tampilan sys.dm_xe_object_columns sebagai column_type 'dapat disesuaikan' dan object_name = target_name.

Catatan: Jika Anda menggunakan target buffer cincin, sebaiknya atur parameter target max_memory ke 2048 kilobyte (KB) untuk membantu menghindari kemungkinan pemotongan data output XML. Untuk informasi selengkapnya tentang kapan menggunakan jenis target yang berbeda, lihat Target Peristiwa Yang Diperluas SQL Server.
DROP TARGET <event_target_specifier> Menghilangkan target yang diidentifikasi oleh <event_target_specifier>. <> event_target_specifier harus valid dalam sesi peristiwa.
EVENT_RETENTION_MODE = { ALLOW_SINGLE_EVENT_LOSS | ALLOW_MULTIPLE_EVENT_LOSS | NO_EVENT_LOSS } Menentukan mode retensi peristiwa yang akan digunakan untuk menangani kehilangan peristiwa.

ALLOW_SINGLE_EVENT_LOSS
Peristiwa dapat hilang dari sesi. Satu peristiwa hanya dihilangkan ketika semua buffer peristiwa penuh. Kehilangan satu peristiwa ketika buffer peristiwa penuh memungkinkan karakteristik performa SQL Server yang dapat diterima, sekaligus meminimalkan hilangnya data dalam aliran peristiwa yang diproses.

ALLOW_MULTIPLE_EVENT_LOSS
Buffer peristiwa penuh yang berisi beberapa peristiwa dapat hilang dari sesi. Jumlah peristiwa yang hilang tergantung pada ukuran memori yang dialokasikan untuk sesi, partisi memori, dan ukuran peristiwa dalam buffer. Opsi ini meminimalkan dampak performa pada server ketika buffer peristiwa diisi dengan cepat, tetapi sejumlah besar peristiwa dapat hilang dari sesi.

NO_EVENT_LOSS
Tidak ada kehilangan peristiwa yang diperbolehkan. Opsi ini memastikan bahwa semua peristiwa yang dinaikkan akan dipertahankan. Menggunakan opsi ini memaksa semua tugas yang mengaktifkan peristiwa untuk menunggu hingga ruang tersedia dalam buffer peristiwa. Ini dapat menyebabkan masalah performa yang dapat dideteksi saat sesi peristiwa aktif. Koneksi pengguna mungkin terjaga saat menunggu peristiwa dibuang dari buffer.
MAX_DISPATCH_LATENCY = { detik DETIK | TAK TERBATAS } Menentukan jumlah waktu peristiwa di-buffer dalam memori sebelum dikirim ke target sesi peristiwa. Nilai latensi minimum adalah 1 detik. Namun, 0 dapat digunakan untuk menentukan latensi INFINITE. Secara default, nilai ini diatur ke 30 detik.

detik DETIK
Waktu, dalam detik, untuk menunggu sebelum mulai menyiram buffer ke target. detik adalah bilangan bujur.

TAK TERBATAS
Buffer flush ke target hanya ketika buffer penuh, atau ketika sesi peristiwa ditutup.

Catatan: MAX_DISPATCH_LATENCY = 0 DETIK setara dengan MAX_DISPATCH_LATENCY = INFINITE.
MAX_EVENT_SIZE =size [ KB | MB ] Menentukan ukuran maksimum yang diperbolehkan untuk peristiwa. MAX_EVENT_SIZE hanya boleh diatur untuk mengizinkan peristiwa tunggal yang lebih besar dari MAX_MEMORY; mengaturnya menjadi kurang dari MAX_MEMORY akan menimbulkan kesalahan. ukuran adalah bilangan bulat dan dapat berupa nilai kilobyte (KB) atau megabyte (MB). Jika ukuran ditentukan dalam kilobyte, ukuran minimum yang diizinkan adalah 64 KB. Saat MAX_EVENT_SIZE diatur, dua buffer ukuran dibuat selain MAX_MEMORY. Ini berarti bahwa total memori yang digunakan untuk buffering peristiwa MAX_MEMORY + 2 * MAX_EVENT_SIZE.
MEMORY_PARTITION_MODE = { NONE | PER_NODE | PER_CPU } Menentukan lokasi tempat buffer peristiwa dibuat.

NONE
Satu set buffer dibuat dalam instans SQL Server.

PER NODE - Satu set buffer dibuat untuk setiap simpul NUMA.

PER CPU - Satu set buffer dibuat untuk setiap CPU.
TRACK_CAUSALITY = { AKTIF | NONAKTIF } Menentukan apakah kausalitas dilacak atau tidak. Jika diaktifkan, kausalitas memungkinkan peristiwa terkait pada koneksi server yang berbeda untuk dikorelasikan bersama-sama.
STARTUP_STATE = { AKTIF | NONAKTIF } Menentukan apakah akan memulai sesi kejadian ini secara otomatis atau tidak ketika SQL Server dimulai.

Jika STARTUP_STATE=ON sesi peristiwa hanya akan dimulai jika SQL Server dihentikan lalu dimulai ulang.

ON= Sesi kejadian dimulai saat startup.

OFF = Sesi peristiwa TIDAK dimulai saat startup.

Keterangan

Argumen ADD dan DROP tidak dapat digunakan dalam pernyataan yang sama.

Izin

Memerlukan ALTER ANY EVENT SESSION izin.

Contoh

Contoh berikut memulai sesi peristiwa, mendapatkan beberapa statistik sesi langsung, lalu menambahkan dua peristiwa ke sesi yang ada.

-- 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  

Lihat Juga

CREATE EVENT SESSION (T-SQL)
HILANGKAN SESI PERISTIWA (T-SQL)
Target Peristiwa Yang Diperluas SQL Server
sys.server_event_sessions (T-SQL)
sys.dm_xe_objects (T-SQL)
sys.dm_xe_object_columns (T-SQL)