Устранение неполадок компонента Database Mail: письмо поставлено в очередь, но нет записей в представлении sysmail_event_log или в журнале событий приложений Windows

В этом разделе описано устранение неполадок в случаях, когда сообщения электронной почты успешно ставятся в очередь, однако активность внешней программы не отображается в представлении sysmail_event_log или в журнале событий приложений Windows.

Для постановки сообщений электронной почты в очередь компонент Database Mail использует компонент Service Broker. Если компонент Database Mail остановлен или функция доставки сообщений компонента Service Broker не активирована в базе данных msdb, компонент Database Mail ведет базу данных очереди сообщений, но не имеет возможности отправлять их. В этом случае сообщения компонента Service Broker остаются в очереди сообщений электронной почты компонента Service Broker. Компонент Service Broker не активирует внешнюю программу, поэтому записи в журнале sysmail_event_log отсутствуют, а состояние элемента очереди в таблице sysmail_allitems и связанных представлениях не обновляется.

Выполните следующую инструкцию, чтобы проверить, включен ли компонент Database Mail:

SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb';

Значение 0 указывает на то, что компонент Service Broker не активирован в базе данных msdb для доставки сообщений. Для устранения проблемы активируйте компонент Service Broker в базе данных. Дополнительные сведения об активации компонента Service Broker для доставки сообщений см. в разделе Как активировать доставку сообщений компонента Service Broker в базах данных (Transact-SQL).

Компонент Database Mail зависит от нескольких внутренних хранимых процедур. Для сокращения контактной зоны эти хранимые процедуры отключены во вновь установленном экземпляре SQL Server. Чтобы включить эти хранимые процедуры, воспользуйтесь параметром Database Mail XPs системной хранимой процедуры sp_configure.

Компонент Database Mail в базе данных msdb может быть остановлен. Для проверки состояния компонента Database Mail выполните следующую инструкцию:

EXECUTE dbo.sysmail_help_status_sp;

Для запуска компонента Database Mail в базе данных обслуживания почты выполните в базе данных msdb следующую команду:

EXECUTE dbo.sysmail_start_sp;

В момент активации компонент Service Broker проверяет продолжительность диалога для сообщений; сообщениям, которые находились в очереди передачи компонента Service Broker дольше, чем установлено настройками продолжительности диалога, немедленно назначается состояние ошибки. Компонент Database Mail обновляет состояние сообщений с ошибками в таблице sysmail_allitems и связанных представлениях. После этого пользователь может принять решение о целесообразности новой отправки сообщений. Дополнительные сведения о настройке продолжительности диалога, которая используется компонентом Database Mail, см. в разделе sysmail_configure_sp (Transact-SQL).