Устранение неполадок компонента Database Mail: письмо поставлено в очередь, но нет записей в представлении sysmail_event_log или в журнале событий приложений Windows
В данном подразделе описан порядок устранения неполадок в случаях, когда сообщения электронной почты успешно ставятся в очередь, однако активность внешней программы не отображается в представлении sysmail_event_log (Transact-SQL) или в журнале событий 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. Для включения этих хранимых процедур используйте программу Настройка контактной зоны SQL Server или системную хранимую процедуру Хранимая процедура sp_configure (Transact-SQL).
Компонент 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 (Transact-SQL) и связанных представлениях. После этого пользователь может принять решение о целесообразности новой отправки сообщений. Дополнительные сведения о настройке продолжительности диалога, которая используется компонентом Database Mail, см. в разделе sysmail_configure_sp (Transact-SQL).
См. также
Задачи
Устранение неполадок в работе компонента Database Mail
Устранение неполадок компонента Database Mail: основные шаги
Основные понятия
Структура компонента Database Mail
Компонент Database Mail