Aracılığıyla paylaş


sp_add_alert (Transact-SQL)

Şunlar için geçerlidir: SQL Server

Bir uyarı oluşturur.

Transact-SQL söz dizimi kuralları

Sözdizimi

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' ]
[ ; ]

Tartışmalar

[ @name = ] N'adı'

Uyarının adı. Ad, uyarıya yanıt olarak gönderilen e-posta veya çağrı kutusu iletisinde görünür. Benzersiz olmalıdır ve yüzde (%) karakterini içerebilir. @namesysname'dir ve varsayılan değer yoktur.

[ @message_id = ] message_id

Uyarıyı tanımlayan ileti hata numarası. (Genellikle tablodaki bir hata numarasına sysmessages karşılık gelir.) @message_id, varsayılan değeri olan int'tir0. Uyarıyı tanımlamak için @severity kullanılıyorsa, @message_id veya NULLolmalıdır0.

Yalnızca sysmessages Microsoft Windows uygulama günlüğüne yazılan hatalar uyarı gönderilmesine neden olabilir.

[ @severity = ] önem derecesi

Uyarıyı tanımlayan önem düzeyi (içinden 1 ) 25. @severity, varsayılan değeri olan int'tir0. Belirtilen önem derecesiyle Windows uygulama günlüğüne gönderilen tabloda depolanan sysmessages tüm SQL Server iletileri uyarının gönderilmesine neden olur. Uyarıyı tanımlamak için @message_id kullanılıyorsa , @severity olmalıdır 0.

[ @enabled = ] etkin

Uyarının geçerli durumunu gösterir. @enabled, varsayılan değeri 1 (etkin) olan tinyint'tir. ise 0, uyarı etkin değildir ve tetiklenmiyorsa.

[ @delay_between_responses = ] delay_between_responses

Uyarıya verilen yanıtlar arasındaki saniye cinsinden bekleme süresi. @delay_between_responses, varsayılan 0değeri olan int değeridir. Bu, yanıtlar arasında beklemenin gerek olmadığı anlamına gelir (uyarının her oluşumu bir yanıt oluşturur). Yanıt şu formlardan birinde veya her ikisinde olabilir:

  • E-posta veya çağrı ile gönderilen bir veya daha fazla bildirim
  • Yürütülecek bir iş

Bu değeri ayarlayarak, kısa bir süre içinde bir uyarı tekrarlandığında istenmeyen e-posta iletilerinin gönderilmesini engellemek mümkündür.

[ @notification_message = ] N'notification_message'

e-posta, net sendveya çağrı cihazı bildiriminin bir parçası olarak işlecine gönderilen isteğe bağlı bir ek ileti. @notification_messagenvarchar(512), varsayılan değeridir NULL. @notification_message belirtmek, düzeltme yordamları gibi özel notlar eklemek için kullanışlıdır.

[ @include_event_description_in = ] include_event_description_in

SQL Server hatasının açıklamasının bildirim iletisinin bir parçası olarak eklenip eklenmeyeceği. @include_event_description_in, varsayılan değeri 5 (e-posta ve net send) olan tinyint değeridir ve bu değerlerden bir veya daha fazlasının mantıksal işleçle birleştirilmesine OR sahip olabilir.

Önemli

Pager ve net send seçenekler, SQL Server'ın gelecekteki bir sürümünde SQL Server Aracısı'ndan kaldırılacaktır. Bu özellikleri yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özellikleri kullanan uygulamaları değiştirmeyi planlayın.

Değer Açıklama
0 Hiç kimse
1 E-posta gönder
2 Çağrı cihazı
4 net send

[ @database_name = ] N'database_name'

Uyarının tetiklenmek için hatanın oluşması gereken veritabanı. @database_name sağlanmazsa, hatanın oluştuğu yerden bağımsız olarak uyarı tetikler. @database_name, varsayılanı ile sysname. Köşeli ayraç ([ ]) içine alınmış adlara izin verilmez.

[ @event_description_keyword = ] N'event_description_keyword'

Hata iletisi günlüğündeki SQL Server hatasının açıklamasında bulunması gereken karakter dizisi. @event_description_keywordnvarchar(100), varsayılan değeri NULL. Bu parametre, nesne adlarını filtrelemek için kullanışlıdır (örneğin, customer_table).

Uyarı

LIKETransact-SQL ifade desen eşleştirme karakterleri kullanılamaz.

[ @job_id = ] job_id

Bu uyarıya yanıt olarak çalıştırılacak işin iş kimlik numarası. @job_id, varsayılanı ilebenzersizleştiricidir.

@job_id veya @job_name belirtilmelidir, ancak her ikisi de belirtilemiyor.

[ @job_name = ] N'job_name'

Bu uyarıya yanıt olarak yürütülecek işin adı. @job_name sysnameve varsayılan olarak .

@job_id veya @job_name belirtilmelidir, ancak her ikisi de belirtilemiyor.

[ @raise_snmp_trap = ] raise_snmp_trap

SQL Server sürüm 7.0'da uygulanmadı. @raise_snmp_trap, varsayılan değeri olan tinyint'tir0.

[ @performance_condition = ] N'performance_condition'

'ItemComparatorValue' biçiminde ifade edilen bir değer. @performance_condition, varsayılan NULLdeğeri olan nvarchar(512)'dir ve bu öğelerden oluşur.

Format öğesi Açıklama
Öğe Bir performans nesnesi, performans sayacı veya sayacın adlandırılmış örneği.
Karşılaştırıcı Şu işleçlerden biri: >, <veya =.
Value Sayacın sayısal değeri.

[ @category_name = ] N'category_name'

Uyarı kategorisinin adı. @category_namesysname değeridir ve varsayılan değeri .NULL

[ @wmi_namespace = ] N'wmi_namespace'

Olayları sorgulamak için WMI ad alanı. @wmi_namespacesysname değeridir ve varsayılan değeri .NULL Yalnızca yerel sunucudaki ad alanları desteklenir.

[ @wmi_query = ] N'wmi_query'

Uyarı için WMI olayını belirten sorgu. @wmi_querynvarchar(512), varsayılan değeridir NULL.

Dönüş kodu değerleri

0 (başarı) veya 1 (başarısızlık).

Sonuç kümesi

Yok.

Açıklamalar

sp_add_alert msdb veritabanından çalıştırılmalıdır.

SQL Server ve SQL Server uygulamaları tarafından oluşturulan hataların/iletilerin Windows uygulama günlüğüne gönderildiği ve bu nedenle uyarı oluşturabileceği durumlar şunlardır:

  • Önem derecesi 19 veya üzeri sys.messages hatalar
  • Söz dizimi ile WITH LOG çağrılan herhangi bir RAISERROR deyim
  • Kullanılarak değiştirilen veya oluşturulan tüm sys.messages hatalar sp_altermessage
  • kullanılarak günlüğe kaydedilen tüm olaylar xp_logevent

SQL Server Management Studio, uyarı sisteminin tamamını yönetmek için kolay, grafik bir yol sağlar ve uyarı altyapısını yapılandırmanın önerilen yoludur.

Bir uyarı düzgün çalışmıyorsa aşağıdakilerin yapılıp yapılmadığını denetleyin:

  • SQL Server Agent hizmeti çalışıyor

  • Olay Windows uygulama günlüğünde göründü

  • Uyarı etkinleştirildi

  • xp_logevent ile oluşturulan olaylar master veritabanında gerçekleşir. Bu nedenle, xp_logevent uyarının @database_name veya NULLolmadığı sürece bir uyarı master tetiklemez.

İzinler

Varsayılan olarak, yalnızca sysadmin sabit sunucu rolünün üyeleri sp_add_alertyürütebilir.

Örnekler

Örnek 1 - İş için uyarı ekleme

Aşağıdaki örnek, tetiklendiğinde işi çalıştıran Back up the AdventureWorks2022 Database bir uyarı (Test Uyarısı) ekler.

Uyarı

Bu örnekte, 55001 iletisinin Back up the AdventureWorks2022 Database ve işin zaten var olduğu varsayılır. Örnek yalnızca açıklayıcı amaçlarla gösterilir.

USE msdb;
GO

EXECUTE 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

Örnek 2 - Çoğaltma eşiği için uyarı ekleme

Aşağıdaki örnek, bir çoğaltma işleminin gecikme eşiğini aştığını size bildirmek için bir uyarı ekler:

EXECUTE msdb.dbo.sp_add_alert
    @name = N'Replication Warning: Transactional replication latency (Threshold: latency)',
    @message_id = 14161,
    @severity = 0,
    @enabled = 1,
    @delay_between_responses = 30,
    @include_event_description_in = 5,
    @category_name = N'Replication',
    @job_id = N'00000000-0000-0000-0000-000000000000';
GO