Почта БД SQL Server 2016 не отправляется

17

Я нахожусь на SQL Server 2016 и получаю удовольствие ... моя почта БД не отправляется, и у меня не хватает мест для поиска. Я дважды проверил права доступа учетной записи SQL к исполняемому файлу DBmail - он прочитал и выполнил. Я ввел правило для исходящего порта брандмауэра 587. Я попробовал другую учетную запись и профиль почты с теми же неотправленными проблемами. Единственные записи в журналах (db mail logs) являются началом и окончанием службы. Там нигде нет ошибок, которые я могу найти. Сообщения электронной почты просто входят в очередь отправки и никогда не покидают ее. Учетные записи могут отправлять и получать электронную почту самостоятельно и с экземпляра 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? Вопрос не хватает много соответствующей информации ...
Паоло
@кин Нет, это общедоступная электронная почта. Оба письма отправлены в офис 365, и учетные записи отправляют и получают штраф из SQL 2014. В конец первого параграфа, описывающего ситуацию, добавлено еще несколько деталей.
Дейв
Я имел в виду ваш почтовый профиль базы данных.
Кин Шах
Можете ли вы пинговать / telnet SMTP-сервер с вашего сервера SQL Server 2016? Если да, вы можете попробовать запустить скрипт VB по ссылке mssqltips.com/sqlservertip/1625/…, чтобы исключить любую проблему SMTP. Если вы получаете тестовое письмо, вы можете быть уверены, что это проблема с сервером SQL.
SQLPRODDBA

Ответы:

17

По какой-то причине при двойной проверке разрешений я дважды щелкнул по самому исполняемому файлу БД. Результатом на компьютере с SQL Server 2014 было пустое командное окно. На SQL Server 2016 щелчок по исполняемому файлу БД Почты представил это сообщение:

введите описание изображения здесь

Я не могу найти это требование в документации по SQL Server 2016, но оно явно является требованием. БД Почта работает отлично, без каких-либо других изменений, кроме установки .NET 3.5.

Дейв
источник
Я была такая же проблема. Решено путем применения .net 3.5.
Сэр Клятва-много-много
это исправило мою проблему тоже! это сводило меня с ума, но установка NET3.5 устранила мою проблему!
NULL. Dude
Это исправило ту же проблему для меня на 2016 SP1 CU8
Джеймс Андерсон
где находится исполняемый файл БД?
JzInqXc9Dg
@ Дэйв О, ИИСУС, ЭТО ИЗУМИТЕЛЬНО. Просто интересно ... вы используете LogMeIn на этих серверах? Мы столкнулись со странными ситуациями, когда LogMeIn удаляет или удаляет материал, и они отказываются признать это. Однажды моя почта базы данных работала нормально на одном ящике и определенно перестала работать когда-то, когда мы переехали в LogMeIn
Джон Заброски
10

Согласно службе поддержки Microsoft, в программе установки SQL Server 2016 есть ошибка, из-за которой почта базы данных не работает без .net 3.5

Есть обходной путь, создав файл DatabaseMail.exe.config в той же папке, где существует DatabaseMail.exe (папка Binn), запишите в файл следующее и сохраните в кодировке 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 Database Mail не работает на компьютере, на котором не установлен .NET Framework 3.5

Джалал Шахуд
источник
4

Взгляните на это вместо этого. Таким образом, вам нужно только скопировать файл, а не устанавливать .net 3.5. Сначала нужно установить CU1. Проверьте здесь для более подробной информации.

Yhagger
источник
2
Уже существует [Накопительное обновление 2 для SQL Server 2016 | support.microsoft.com/en-us/kb/3182270] с [FIX: SQL Server 2016 Database Mail не работает на компьютере, на котором не установлен .NET Framework 3.5 | support.microsoft.com/en-us/kb/3186435] .
Владислав
1
Только потратил 30 минут на изучение этой проблемы, прежде чем оказаться здесь. Спасибо, что сэкономили мне больше времени.
Пол
1

Помимо уже упомянутых причин, также важно активировать профиль электронной почты на уровне агента SQL Server, как указано здесь :

  • Щелкните правой кнопкой мыши Агент SQL Server> выберите Свойства
  • Выберите Alert System на левой панели

  • Галочка> Включить почтовый профиль

  • Система проверки почты: База данных почты
  • Проверить почтовый профиль: SQLAlerts
  • Галочка> Включить тело письма в уведомлении
  • Нажмите ОК.
  • Перезапустите Агент.
Алексей
источник