Почта базы данных SQL Server очень часто внезапно выходит из строя

#sql-server #sp-send-dbmail #database-mail

Вопрос:

У нас есть автоматические электронные письма с вложениями, которые отправляются каждый день, и так было годами. В прошлую среду электронная почта начала часто давать сбои. Если бы он выходил из строя на 100%, возможно, было бы проще устранить неполадки. Но, похоже, он очень промахивается с некоторыми попаданиями, поэтому попытаться выяснить закономерность было сложно.

Описание из журнала событий таково: Почта не может быть отправлена получателям из-за сбоя почтового сервера. (Отправка почты с использованием учетной записи 1 (2021-10-27T07:43:28). Сообщение об исключении: Не удается отправить почту на почтовый сервер. (Сбой при отправке почты.). )

Тот же профиль/учетная запись/параметры действовали в течение последних нескольких лет. SMTP-сервер-это Office 365, порт 25, и для учетной записи используется базовая аутентификация. Для учетной записи агента заданий SQL Server также ничего не изменилось.

Вещи, которые я пытался сделать безрезультатно — создать другую учетную запись/профиль для учетной записи электронной почты базы данных, увеличить количество повторных попыток, изменить минимальное время жизни исполняемого файла на 12 часов вместо 10 минут. Я пытался лично запустить скрипт sp_send_dbmail (как с вложением, так и без него), и он также попадает или пропускается (чаще пропускается) из моей собственной учетной записи, поэтому я думаю, что это не существующая проблема с разрешениями/доступом.

Я попытался поискать в Интернете все идеи, которые могли бы быть связаны с этим. Я исправил SQL Server 2017 до CU26, надеясь, что это могло быть что-то в обновлении, которое исправило это, но не повезло. Я в полной растерянности от того, как это так неожиданно всплыло. Я открыт для предложений. Наша деятельность невелика и проста, поэтому в инфраструктуре у нас нет ничего очень сложного.

Заранее спасибо.

При редактировании: я попытался запустить сценарий powershell со своего локального компьютера (Windows 10), подключившись к smtp office 365 и используя учетные данные профиля электронной почты для почты базы данных. Он отлично работает с моей локальной машины. Хотя на добавленной заметке, когда я пытаюсь выполнить сценарий powershell с компьютера, на котором работает sql server (windows server 2016), он выдает мне ошибку о 4 аргументах в отправке, которая при некотором поиске в Google показывает, что это, по сути, общая ошибка при попытке подключиться к smtp-клиенту. Я надеюсь, что с помощью этой информации это может пролить больше света на то, как этот вопрос сформулирован, поскольку на данный момент я просто был в растерянности от всего, что я пробовал до сих пор.

Комментарии:

1. SQL Server имеет возможность отправлять электронные письма, но это очень дорогой SMTP-сервер. Вы рассматривали возможность использования внешней программы для получения данных с SQL Server и их отправки? Похоже, что это было бы проще для устранения неполадок (по крайней мере, он должен получать более подробные журналы, и вы можете довольно легко указать его на разных серверах SMTP).

2. По моему опыту, вывод журнала, сгенерированный DatabaseMail.exe вспомогательный процесс практически бесполезен. Лучше зайти на свой исходящий SMTP-сервер и проверить журналы там, чтобы узнать, в чем заключается фактическая проблема(проблемы).

3. @AaronBertrand — Даже если бы мы это сделали, это не произошло бы в одночасье, так как это было бы передано властям, чтобы в конечном итоге это произошло. Это приведет к тому, что мы не будем обосновывать проблему, с которой мы сейчас сталкиваемся, поскольку мне зададут вопрос, если я не знаю, почему это не работает, как мы узнаем, что стороннее приложение будет работать, а также они не слишком заинтересованы в сторонних приложениях здесь без создания BAA, так как мы имеем дело с данными HIPAA.

4. @AlwaysLearning — собираюсь посмотреть, сможет ли наш сотрудник службы поддержки получить и отсортировать журнал smtp outlook365.

5. Ага. Я не предлагал это в качестве немедленного решения, но, конечно, вы можете попробовать отправить электронную почту на этот SMTP-сервер с помощью чего-то другого, кроме SQL Server, без получения одобрения генерального директора. В любом случае вам нужно смотреть на SMTP-сервер, а не на SQL-сервер, SQL-сервер-это просто тупой ретранслятор «что-то пошло не так».

Ответ №1:

На этой неделе я обнаружил, что у нас одна и та же проблема. На самом деле это началось около 10/1 и то включалось, то выключалось, но не настолько серьезно, чтобы привлечь мое внимание. Однако на этой неделе все стало гораздо серьезнее. Вчера я не смог получить ни одного электронного письма ни от одной из наших 3 баз данных, все они маршрутизировались через SMTP в Office 365.

Немного покопавшись, я смог найти единственное исправление, которое, по моему мнению, решает эту проблему, здесь: https://dba.stackexchange.com/a/233249/131993

Как только мы использовали этот исполняемый файл реестра на компьютере с SQL Server, я смог надежно отправить электронное письмо с первой попытки. Я отправил около 150 сообщений после этого исправления без каких-либо проблем. Поскольку он прерывистый, я не могу со 100% уверенностью сказать, что проблема устранена, но пока все выглядит хорошо.

Комментарии:

1. Интересный. Я посмотрю на это сегодня вечером. Спасибо!