sp_add_alert (T-SQL)
Berlaku untuk: SQL Server
Membuat pemberitahuan.
Sintaks
sp_add_alert [ @name = ] N'name'
[ , [ @message_id = ] message_id ]
[ , [ @severity = ] severity ]
[ , [ @enabled = ] enabled ]
[ , [ @delay_between_responses = ] delay_between_responses ]
[ , [ @notification_message = ] N'notification_message' ]
[ , [ @include_event_description_in = ] include_event_description_in ]
[ , [ @database_name = ] N'database_name' ]
[ , [ @event_description_keyword = ] N'event_description_keyword' ]
[ , { [ @job_id = ] job_id | [ @job_name = ] N'job_name' } ]
[ , [ @raise_snmp_trap = ] raise_snmp_trap ]
[ , [ @performance_condition = ] N'performance_condition' ]
[ , [ @category_name = ] N'category_name' ]
[ , [ @wmi_namespace = ] N'wmi_namespace' ]
[ , [ @wmi_query = ] N'wmi_query' ]
[ ; ]
Argumen
[ @name = ] N'name'
Nama pemberitahuan. Nama muncul di email atau pesan pager yang dikirim sebagai respons terhadap pemberitahuan. Ini harus unik dan dapat berisi karakter persen (%
). @name adalah sysname, tanpa default.
[ @message_id = ] message_id
Nomor kesalahan pesan yang menentukan pemberitahuan. (Biasanya sesuai dengan nomor kesalahan dalam sysmessages
tabel.) @message_id int, dengan default 0
. Jika @severity digunakan untuk menentukan pemberitahuan, @message_id harus 0
atau NULL
.
Hanya sysmessages
kesalahan yang ditulis ke log aplikasi Microsoft Windows yang dapat menyebabkan pemberitahuan dikirim.
[ @severity = ] tingkat keparahan
Tingkat keparahan (dari 1
melalui 25
) yang menentukan pemberitahuan. @severity int, dengan default 0
. Setiap pesan SQL Server yang disimpan dalam tabel yang sysmessages
dikirim ke log aplikasi Windows dengan tingkat keparahan yang ditunjukkan menyebabkan pemberitahuan dikirim. Jika @message_id digunakan untuk menentukan pemberitahuan, @severity harus 0
.
[ @enabled = ] diaktifkan
Menunjukkan status pemberitahuan saat ini. @enabled kecil, dengan default 1
(diaktifkan). Jika 0
, pemberitahuan tidak diaktifkan dan tidak diaktifkan.
[ @delay_between_responses = ] delay_between_responses
Periode tunggu, dalam detik, antara respons terhadap pemberitahuan. @delay_between_responses int, dengan default 0
, yang berarti tidak ada penantian antara respons (setiap kemunculan pemberitahuan menghasilkan respons). Respons dapat berada dalam salah satu atau kedua bentuk ini:
- Satu atau beberapa pemberitahuan yang dikirim melalui email atau pager
- Pekerjaan yang akan dijalankan
Dengan mengatur nilai ini, dimungkinkan untuk mencegah, misalnya, pesan email yang tidak diinginkan dikirim ketika pemberitahuan berulang kali terjadi dalam waktu singkat.
[ @notification_message = ] N'notification_message'
Pesan tambahan opsional yang dikirim ke operator sebagai bagian dari pemberitahuan email, net send
, atau pager. @notification_message adalah nvarchar(512), dengan default NULL
. Menentukan @notification_message berguna untuk menambahkan catatan khusus seperti prosedur perbaikan.
[ @include_event_description_in = ] include_event_description_in
Apakah deskripsi kesalahan SQL Server harus disertakan sebagai bagian dari pesan pemberitahuan. @include_event_description_in kecil, dengan default 5
(email dan net send
), dan dapat memiliki satu atau beberapa nilai ini dikombinasikan dengan OR
operator logis.
Penting
Pager dan net send
opsi akan dihapus dari SQL Server Agent di versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur-fitur ini.
Nilai | Deskripsi |
---|---|
0 |
Tidak |
1 |
|
2 |
Penyeranta |
4 |
net send |
[ @database_name = ] N'database_name'
Database tempat kesalahan harus terjadi agar pemberitahuan diaktifkan. Jika @database_name tidak disediakan, pemberitahuan akan diaktifkan terlepas dari di mana kesalahan terjadi. @database_name adalah sysname, dengan default NULL
. Nama yang diapit dalam tanda kurung siku ([ ]
) tidak diizinkan.
[ @event_description_keyword = ] N'event_description_keyword'
Urutan karakter yang harus ditemukan dalam deskripsi kesalahan SQL Server di log pesan kesalahan. @event_description_keyword adalah nvarchar(100), dengan default NULL
. Parameter ini berguna untuk memfilter nama objek (misalnya, customer_table
).
Catatan
Karakter pencocokan pola ekspresi Transact-SQL LIKE
tidak dapat digunakan.
[ @job_id = ] job_id
Nomor identifikasi pekerjaan dari pekerjaan yang akan dijalankan sebagai respons terhadap pemberitahuan ini. @job_id adalah uniqueidentifier, dengan default NULL
.
Baik @job_id atau @job_name harus ditentukan, tetapi keduanya tidak dapat ditentukan.
[ @job_name = ] N'job_name'
Nama pekerjaan yang akan dijalankan sebagai respons terhadap pemberitahuan ini. @job_name adalah sysname, dengan default NULL
.
Baik @job_id atau @job_name harus ditentukan, tetapi keduanya tidak dapat ditentukan.
[ @raise_snmp_trap = ] raise_snmp_trap
Tidak diimplementasikan di SQL Server versi 7.0. @raise_snmp_trap kecil, dengan default 0
.
[ @performance_condition = ] N'performance_condition'
Nilai yang dinyatakan dalam format 'ItemComparatorValue'. @performance_condition adalah nvarchar(512), dengan default NULL
, dan terdiri dari elemen-elemen ini.
Elemen format | Deskripsi |
---|---|
Benda | Objek performa, penghitung kinerja, atau instans penghitung bernama. |
Komparator | Salah satu operator ini: > , , < atau = . |
Nilai | Nilai numerik penghitung. |
[ @category_name = ] N'category_name'
Nama kategori pemberitahuan. @category_name adalah sysname, dengan default NULL
.
[ @wmi_namespace = ] N'wmi_namespace'
Namespace layanan WMI yang akan dikueri untuk peristiwa. @wmi_namespace adalah sysname, dengan default NULL
. Hanya namespace layanan di server lokal yang didukung.
[ @wmi_query = ] N'wmi_query'
Kueri yang menentukan peristiwa WMI untuk pemberitahuan. @wmi_query adalah nvarchar(512), dengan default NULL
.
Mengembalikan nilai kode
0
(berhasil) atau 1
(kegagalan).
Tataan hasil
Tidak ada.
Keterangan
sp_add_alert
harus dijalankan dari msdb
database.
Ini adalah keadaan di mana kesalahan/pesan yang dihasilkan oleh aplikasi SQL Server dan SQL Server dikirim ke log aplikasi Windows dan oleh karena itu dapat menaikkan pemberitahuan:
- Tingkat keparahan 19 atau kesalahan yang lebih tinggi
sys.messages
- Pernyataan apa pun
RAISERROR
yang dipanggil denganWITH LOG
sintaksis - Kesalahan apa pun
sys.messages
yang dimodifikasi atau dibuat menggunakansp_altermessage
- Setiap peristiwa yang dicatat menggunakan
xp_logevent
SQL Server Management Studio menyediakan cara grafis yang mudah untuk mengelola seluruh sistem peringatan dan merupakan cara yang disarankan untuk mengonfigurasi infrastruktur pemberitahuan.
Jika pemberitahuan tidak berfungsi dengan baik, periksa apakah:
Layanan SQL Server Agent sedang berjalan
Peristiwa muncul di log aplikasi Windows
Pemberitahuan diaktifkan
Peristiwa yang dihasilkan dengan
xp_logevent
terjadi dalammaster
database. Oleh karena itu,xp_logevent
tidak memicu pemberitahuan kecuali @database_name untuk pemberitahuan adalahmaster
atauNULL
.
Izin
Secara default, hanya anggota peran server tetap sysadmin yang dapat menjalankan sp_add_alert
.
Contoh
Contoh berikut menambahkan pemberitahuan (Pemberitahuan Pengujian) yang menjalankan Back up the AdventureWorks2022 Database
pekerjaan saat diaktifkan.
Catatan
Contoh ini mengasumsikan bahwa pesan 55001 dan Back up the AdventureWorks2022 Database
pekerjaan sudah ada. Contoh ditampilkan hanya untuk tujuan ilustrasi.
USE msdb;
GO
EXEC dbo.sp_add_alert
@name = N'Test Alert',
@message_id = 55001,
@severity = 0,
@notification_message = N'Error 55001 has occurred. The database will be backed up...',
@job_name = N'Back up the AdventureWorks2022 Database';
GO