最近遇到兩起關於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軟件發送郵件。