最近遇到两起关于SQL Server数据库邮件发送异常的案例,这些问题也有点意思,顺便记录一下。方便以后遇到类似问题的人参考,不要被这些问题弄得抓狂!
案例1:我们一台数据库服务器突然发送邮件都不行了,出现问题时,检查邮件发送记录,你会发现发送状态都是failed。
SELECT * FROM msdb.dbo.sysmail_faileditems
SELECT * FROM msdb.dbo.sysmail_mailitems
检查Database Mail Log,你会发现有下面一些错误日志,具体如下所示:
由于邮件服务器故障,无法将邮件发送给收件人。 (使用帐户 1 (2017-03-22T00:01:26) 发送邮件。 异常邮件: 无法将邮件发送到邮件服务器。 (SMTP 服务器要求安全连接或客户端未通过身份验证。 服务器响应为: 5.7.1 Client was not authenticated)。)
出现这个问题是因为在EXCHANGE服务器上的关于这台服务器的SMTP权限不知道什么原因被取消了,导致数据库使用sp_send_dbmail发送邮件时,客户端无法通过身份验证。这个找EXCHANGE的管理员增加SMTP权限即可解决。
案例2:使用SQLBackupAndFtp备份的一台数据库服务器也突然遭遇发送邮件失败,测试邮件发送时会遇到超时提示。这个原因,系统管理员帮忙找了好久,才发现是因为服务器上安装了Symantec的杀毒软件,他们在服务器端开启了Internet Email Auto-Protect功能。 导致Symante杀毒软件拦截SQLBackupAndFtp软件发送邮件。