我将 SQL Server 2014 数据库配置为备份到 Azure 存储帐户。我还通过以下方式启用了电子邮件通知
EXEC msdb.smart_admin.sp_set_parameter
@parameter_name = 'SSMBackup2WANotificationEmailIds',
@parameter_value = '[email protected]'
但是,它会每 15 分钟给我发送一封电子邮件,告诉我一切正常。我只希望在出现问题时收到电子邮件。
问题:我需要做什么更改才能在发生错误时收到电子邮件?
顺便说一句:我有一台前段时间配置的服务器。使用相同的脚本其行为符合我的要求,所以我知道这是可行的。但由于我使用了与之前相同的脚本,因此我不知道配置有何不同,也不知道如何解决。
答案1
看起来你做的是正确的,但每 15 分钟发生的通知可能来自不同的进程。
正如您从本文中最有可能发现的那样https://msdn.microsoft.com/en-us/library/dn449488(v=sql.120).aspx
“启用电子邮件通知以接收备份错误和警告:从查询窗口运行以下 Transact-SQL 语句:”
EXEC msdb.managed_backup.sp_set_parameter
@parameter_name = 'SSMBackup2WANotificationEmailIds',
@parameter_value = '<email1;email2>'
该页面还提供了获取所有计划通知事件的方法:
-- View all events in the current week
Use msdb;
Go
DECLARE @startofweek datetime
DECLARE @endofweek datetime
SET @startofweek = DATEADD(Day, 1-DATEPART(WEEKDAY, CURRENT_TIMESTAMP), CURRENT_TIMESTAMP)
SET @endofweek = DATEADD(Day, 7-DATEPART(WEEKDAY, CURRENT_TIMESTAMP), CURRENT_TIMESTAMP)
EXEC smart_admin.sp_get_backup_diagnostics @begin_time = @startofweek, @end_time = @endofweek;
您每 15 分钟收到一次的通知是否有可能是不同计划通知的一部分,而您没有收到其他通知是因为备份没有出现任何问题?
答案2
这些电子邮件是由名为“smartadmin 健康检查作业”的代理作业生成的。据我所知,没有办法逆转该命令的效果:
EXEC msdb.managed_backup.sp_set_parameter
@parameter_name = 'SSMBackup2WANotificationEmailIds',
@parameter_value = '[email protected]';
您不能将@parameter_value 设置为 NULL 或空字符串,否则您会收到这个非常具体且准确的错误消息:
消息 45204,级别 17,状态 2,过程 sp_set_parameter,第 18 行 [批处理启动第 0 行] 参数 @parameter_value 不能为 NULL 或为空。请提供有效的参数值。
我还没有找到仅在出现错误时生成电子邮件的方法。