萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mssql數據庫 >> SQL Server Alert發送告警郵件少了的原因

SQL Server Alert發送告警郵件少了的原因

SQL Server Alert發送告警郵件少了的原因

這篇文章主要為大家詳細介紹了SQL Server Alert發送告警郵件少了的原因,具有一定的參考價值,感興趣的小伙伴們可以參考一下

最近突然發現我們部署在數據庫上面的告警(Alert),當錯誤日志裡面出現錯誤時,並不是每個錯誤日志都會發送郵件出來。如下所示,設置了告警“SQL Server Severity Event 14” 

USE [msdb]
GO
 
 
IF NOT EXISTS(SELECT 1 FROM msdb.dbo.syscategories WHERE NAME='DBA_MONITORING' AND category_class=2)
BEGIN
 
EXEC msdb.dbo.sp_add_category
 @class=N'ALERT',
 @type=N'NONE',
 @name=N'DBA_MONITORING' ;
 
END
GO
 
IF EXISTS(SELECT name FROM msdb.dbo.sysalerts WHERE name= N'SQL Server Severity Event 14')
 
 EXEC msdb.dbo.sp_delete_alert @name=N'SQL Server Severity Event 14'
GO
 
 
EXEC msdb.dbo.sp_add_alert @name=N'SQL Server Severity Event 14',
  @message_id=0,
  @severity=14,
  @enabled=1,
  @delay_between_responses=60,
  @include_event_description_in=1,
  @category_name=N'DBA_MONITORING',
  @job_id=N'00000000-0000-0000-0000-000000000000'
GO
 
 
EXEC msdb.dbo.sp_add_notification @alert_name=N'SQL Server Severity Event 14', @operator_name=N'YourSQLDba_Operator', @notification_method = 1
GO

然後我嘗試用sa登錄(sa已經被禁用)了三次,但是我只收到了一封郵件。特意查看了一下sp_add_alert的官方文檔,才知道出現這個原因,是因為參數@delay_between_responses的值設置緣故,通過設置該值,可以防止在在短時間內重復發送一些不需要的電子郵件。如上所示,一分鐘內,即使錯誤日志裡面出現了大量類似的錯誤,也只會發送一封告警郵件。其實只是為了減少發送告警的頻率,如果你想當錯誤日志裡出現這個級別的告警時,都必須發送告警郵件,可以將其值設置為0。但是有時候,如果設置為0,你會收到鋪天蓋地的郵件。其實這個小問題,只是因為以前沒有特意留意這個參數而已。存粹屬於沒有徹底了解這些功能罷了。

警報響應之間的等待時間 (以秒為單位)。delay_between_responsesis int, 默認值為 0, 這意味著在響應之間沒有等待 (每次出現警報都會生成響應)。響應可以是在以下兩種形式中的一個, 或者都是:
通過電子郵件或尋呼機發送的一個或多個通知。
要執行的作業。
通過設置此值, 可以防止例如, 在短時間內重復發生警報時發送不需要的電子郵件。 

參考資料: 

https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-add-alert-transact-sql

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持 。

copyright © 萬盛學電腦網 all rights reserved