sp_add_alert (T-SQL)

Berlaku untuk:SQL Server

Membuat pemberitahuan.

Konvensi sintaks transact-SQL

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 Microsoft 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 Email
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 dengan WITH LOG sintaksis
  • Kesalahan apa pun sys.messages yang dimodifikasi atau dibuat menggunakan sp_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 dalam master database. Oleh karena itu, xp_logevent tidak memicu pemberitahuan kecuali @database_name untuk pemberitahuan adalah master atau NULL.

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