SQL Server作业失败时未发送通知邮件问题求助
SQL Server代理作业失败未发送通知邮件的排查点
以下是针对该问题的具体检查项:
确认SQL Server Agent的邮件配置文件匹配
打开SQL Server Agent属性 → 警报系统 → 邮件会话,勾选"启用邮件配置文件",并确保选择的配置文件与你测试sp_send_dbmail时使用的一致。可通过以下查询查看配置文件列表:EXEC msdb.dbo.sysmail_help_profile_sp验证作业通知的触发规则与关联对象
进入作业属性 → 通知标签页:- 确认勾选了"电子邮件"选项
- 已选择正确的Operator
- 触发条件设置为"作业失败";同时检查作业步骤的"高级"选项,确保步骤失败时设置为"退出报告失败",而非"继续执行下一步"(否则步骤失败但作业不会标记为失败,无法触发通知)
查看msdb数据库的邮件发送日志
执行以下查询获取邮件发送的详细状态与错误信息:SELECT sent_status, subject, recipients, error_message, sent_date FROM msdb.dbo.sysmail_allitems WHERE subject LIKE '%作业%' ORDER BY sent_date DESC;重点关注
sent_status为failed的记录,通过error_message定位具体问题(如邮箱地址错误、账户权限不足等)检查Operator的邮箱地址准确性
在SQL Server Agent → 操作员列表中,确认目标Operator绑定的邮箱地址无拼写错误、多余空格或特殊字符确认SQL Server Agent服务账户的权限
SQL Server Agent运行账户需要拥有使用Database Mail配置文件的权限,执行以下查询验证:EXEC msdb.dbo.sysmail_help_principalprofile_sp若Agent服务账户(如
NT SERVICE\SQLSERVERAGENT)未出现在列表中,需执行以下语句添加权限:EXEC msdb.dbo.sysmail_add_principalprofile_sp @principal_name = 'NT SERVICE\SQLSERVERAGENT', @profile_id = <你的配置文件ID>, @is_default = 1;排查收件方邮件系统的拦截规则
- 检查收件箱的垃圾邮件/垃圾箱文件夹,确认通知邮件未被误判
- 确认作业通知的发件地址与测试邮件一致,且未被企业邮件网关列入黑名单
内容的提问来源于stack exchange,提问作者whatwhatwhat
相关产品推荐
相关产品推荐

