SQL Server 2016 DB 郵件未發送
我在 SQL Server 2016 上並且玩得很開心……我的 DB 郵件沒有發送,而且我沒地方看。我仔細檢查了 DBmail 執行檔的 SQL 帳戶權限 - 它已讀取並執行。我為防火牆出站埠 587 輸入了一條規則。我嘗試了另一個郵件帳戶和配置文件,但存在相同的未發送問題。日誌(db 郵件日誌)中的唯一條目是服務的開始和結束。我能找到的任何地方都沒有錯誤。電子郵件似乎只是進入發送隊列並且永遠不會離開它。這些帳戶可以自己發送和接收電子郵件,也可以從另一台電腦上的 SQL Server 2014 實例發送和接收電子郵件。
我有一個已發送狀態為“未發送”的項目隊列,並檢查了所有正常的地方,所有這些地方都有預期的結果,除了一長串未發送的郵件:
SELECT * FROM msdb..sysmail_event_log order by log_id DESC SELECT * FROM dbo.sysmail_mailitems SELECT * FROM dbo.sysmail_sentitems USE msdb SELECT sent_status, * FROM sysmail_allitems SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb'; EXECUTE msdb.dbo.sysmail_help_status_sp
我已經嘗試將其關閉並再次打開……所以我是否錯過了可以闡明這種情況的 DMV 等?這是我搜尋中沒有的 SQL Server 2016 的已知問題嗎?發送此郵件的任何其他可能步驟?
一時興起,在仔細檢查權限時,我點兩下了實際的 DB 郵件執行檔。SQL Server 2014 機器上的結果是一個空的命令視窗。在 SQL Server 2016 上,點擊 DB Mail 執行檔會顯示以下消息:
我在 SQL Server 2016 文件中的任何地方都找不到這個要求,但它顯然是一個要求。DB Mail 執行良好,除了安裝 .NET 3.5 之外沒有其他更改。
根據 Microsoft 支持,SQL server 2016 安裝程序中存在一個錯誤,導致數據庫郵件在沒有 .net 3.5 的情況下無法工作
通過在DatabaseMail.exe所在的同一文件夾(Binn 文件夾)中創建一個DatabaseMail.exe.config文件來解決此問題,將以下內容寫入文件並使用utf-8 編碼保存
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0"/> <supportedRuntime version="v2.0.50727"/> </startup> </configuration>
來源: 修復:SQL Server 2016 數據庫郵件在未安裝 .NET Framework 3.5 的電腦上不起作用