ALTER EVENT SESSION (Transact-SQL)
Berlaku untuk:
SQL Server (semua versi yang didukung)
Memulai atau menghentikan sesi peristiwa atau mengubah konfigurasi sesi peristiwa.
Sintaks
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 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.
Argumen
| Istilah | Definisi |
|---|---|
| event_session_name | Adalah nama sesi peristiwa yang ada. |
| STATE = START | STOP | Memulai atau menghentikan sesi acara. 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 dalam 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 'tindakan' object_type. |
| DI MANA <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 didefinisikan dalam tampilan sys.dm_xe_objects sebagai object_type 'pred_compare'. |
| DROP EVENT <event_specifier> | 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, kami sarankan Anda mengatur parameter target max_memory ke 2048 kilobyte (KB) untuk membantu menghindari kemungkinan pemotongan data output XML. Untuk informasi selengkapnya tentang kapan menggunakan berbagai jenis target, lihat SQL Server Target Peristiwa yang Diperluas. |
| EVENT_TARGET_SPECIFIER TARGET <DROP> | 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, pemartisian 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 diangkat 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 dapat terjaga saat menunggu peristiwa dibersihkan dari buffer. |
| MAX_DISPATCH_LATENCY = { detik detik | INFINITE } | 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 hitungan detik, untuk menunggu sebelum mulai membersihkan 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 ke 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. Ketika 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. TIDAK 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 = { ON | NONAKTIF } | Menentukan apakah kausalitas dilacak atau tidak. Jika diaktifkan, kausalitas memungkinkan peristiwa terkait pada koneksi server yang berbeda berkorelasi bersama-sama. |
| STARTUP_STATE = { ON | NONAKTIF } | Menentukan apakah akan memulai sesi kejadian ini secara otomatis saat SQL Server dimulai atau tidak. Jika STARTUP_STATE=ON sesi peristiwa hanya akan dimulai jika SQL Server dihentikan lalu dimulai ulang. ON= Sesi peristiwa dimulai saat startup. OFF = Sesi peristiwa TIDAK dimulai saat startup. |
Keterangan
Argumen ADD dan DROP tidak dapat digunakan dalam pernyataan yang sama.
Izin
ALTER ANY EVENT SESSION Memerlukan izin.
Contoh
Contoh berikut memulai sesi acara, 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 (SQL Bertransaksi)
SQL Server Target Peristiwa yang Diperluas
sys.server_event_sessions (SQL Bertransaksi)
sys.dm_xe_objects (SQL Bertransaksi)
sys.dm_xe_object_columns (SQL Bertransaksi)
