Ошибка почты базы данных sql server 2005 (истекло время ожидания операции) - PullRequest
0 голосов
/ 06 декабря 2009

Я настроил Database Mail для отправки электронных писем от базы данных sql. У меня есть хранимая процедура, которая выбирает электронные письма подписчиков и отправляет им такие письма:

EXEC msdb.dbo.sp_send_dbmail 
@profile_name = 'ProfileName',
@recipients = @email,
@subject = @thesubject,
@body = @themessage,
@body_format = 'HTML' ;

Учетная запись, используемая для отправки, работает нормально, потому что, когда я отправил тестовое письмо после настройки компонента Database Mail, оно было успешно отправлено, но проблема заключается в отправке нескольких писем.

В настоящее время в таблице содержится 50 электронных писем после выполнения хранимой процедуры. Я проверил таблицы msdb: sysmails_event_log, sysmails_faileditems и sysmails_sentitems. Я обнаружил, что были отправлены только первые 12 электронных писем, а остальные потерпели неудачу, а сообщение об ошибке в event_log было:

Почту не удалось отправить получателям из-за сбоя почтового сервера. (Отправка почты с использованием учетной записи 1 (2009-12-01T16: 55: 11). Сообщение об исключении: невозможно отправить почту на почтовый сервер. (Время операции истекло.).)

Я проверил электронные письма нет. 13 и более поздние версии, и я не нашел в них ничего плохого, поэтому я попытался выполнить процедуру еще раз, на этот раз она была отправлена ​​на 1-е 14-е письмо, а остальные не удалось с той же ошибкой, поэтому я изменил процедуру и заставил ее выбрать почту начиная с номера почты 15 (как если бы он отправлял записи с 15 до 50) и проверял его, на этот раз он отправил на первое 13-е письмо, я выбрал от 27 до 50 и выполнил, снова отправил на первое 12.

Я не понимаю, что здесь происходит, каково это поведение отправки писем только в диапазоне 12-14 писем одновременно.

Может кто-нибудь помочь мне в этом?

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

Ответы [ 3 ]

1 голос
/ 06 декабря 2009

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

0 голосов
/ 03 мая 2019

Я тоже встречался с этой проблемой. Мое решение - установить задержку отправки списка писем. И проблема была исправлена.

  WHILE @@FETCH_STATUS = 0
  BEGIN
  WAITF OR DELAY '000:00:10'
0 голосов
/ 09 января 2015

Я решаю эту ситуацию, выполняя 2 вещи:

  1. Пересмотр базы данных Mail Profile
  2. Перезапуск службы Windows SMTP

Надеюсь, это сработает для всех, кто попал в ту же ситуацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...