私は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の既知の問題で、検索には含まれていませんか?このメールを送信するための他の可能な手順はありますか?
マイクロソフトサポートによると、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>
ソース:FIX:SQL Server 2016 Database Mailは、.NET Framework 3.5がインストールされていないコンピューターでは機能しません
代わりにこれを見てください。この方法では、.net 3.5をインストールする代わりに、ファイルをコピーするだけで済みます。最初にCU1をインストールする必要があります。詳細は here を確認してください。
すでに述べた原因に加えて、SQL Serverエージェントレベルで電子メールプロファイルをアクティブ化することも重要です ここ :
- SQL Serverエージェントを右クリックし、[プロパティ]を選択します。
左側のペインで[Alert System]を選択します
チェックマーク>メールプロファイルを有効にする
- メールシステムの確認:データベースメール
- メールプロファイルの確認:SQLAlerts
- チェックマーク>通知メッセージに電子メールの本文を含める
- OKをクリックします。
- エージェントを再起動します。