Устранение неполадок компонента Database Mail: основные шаги

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

Определите, включен ли компонент Database Mail

  1. В меню «Пуск» выберите пункт «Все программы», далее откройте Microsoft SQL Server 2005, перейдите к Средства настройки и выберите Настройка контактной зоны SQL Server.

  2. Щелкните Настройка контактной зоны для функциональных возможностей.

  3. В узле MSSQLSERVER разверните Компонент Database Engine и щелкните Компонент Database Mail.

  4. Убедитесь, что параметр Включить хранимые процедуры компонента Database Mail выбран, и нажмите кнопку Применить.

  5. Закройте окно Настройка контактной зоны SQL Server.

Проверьте правильность настроек пользователей для отправки сообщений через компонент Database Mail

  1. Для отправки сообщений через компонент Database Mail пользователь должен быть членом роли DatabaseMailUserRole. Члены фиксированной серверной роли sysadmin и роли msdbdb_owner автоматически являются членами роли DatabaseMailUserRole. Для получения списка всех членов роли DatabaseMailUserRole выполните следующую инструкцию:

    EXEC msdb.sys.sp_helprolemember 'DatabaseMailUserRole' ;
    
  2. Для предоставления пользователю роли DatabaseMailUserRole выполните следующую инструкцию:

    sp_addrolemember @rolename = 'DatabaseMailUserRole', 
       @membername = '<database user>'
    
  3. Для отправки сообщений через компонент Database Mail пользователям необходим доступ как минимум к одному из его профилей. Для получения списка пользователей (участников) и профилей, к которым у них есть доступ, выполните следующую инструкцию:

    EXEC msdb.dbo.sysmail_help_principalprofile_sp ;
    
  4. Воспользуйтесь мастером настройки компонента Database Mail, чтобы создавать профили и предоставлять пользователям доступ к ним.

Подтвердите запуск компонента Database Mail

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

    EXEC msdb.dbo.sysmail_help_status_sp ;
    
  2. Если активация компонента Database Mail не началась, выполните следующую инструкцию, чтобы запустить его:

    EXEC msdb.dbo.sysmail_start_sp
    
  3. Если запущена внешняя программа компонента Database Mail, проверьте состояние очереди почты с помощью следующей инструкции:

    EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail' ;
    

    Почтовая очередь должна находиться в состоянии RECEIVES_OCCURRING. В различные моменты времени состояние очереди может изменяться. Если очередь находится в состоянии, отличном от RECEIVES_OCCURRING, попробуйте остановить ее с помощью процедуры sysmail_stop_sp, а затем запустить заново процедурой sysmail_start_sp.

ms187540.note(ru-ru,SQL.90).gifПримечание.
Столбец length в результирующем наборе процедуры sysmail_help_queue_sp позволяет определить количество сообщений электронной почты, находящихся в очереди.

Определите, относятся проблемы с компонентов Database Mail ко всем учетным записям профиля или только к некоторым из них

  1. Если выяснилось, что отправлять почту могут только некоторые профили, проблема, вероятно, относится к учетным записям компонента Database Mail, которые пользуются неисправными профилями. Чтобы определить, какие из учетных записей успешно отправляют почтовые сообщения, выполните следующую инструкцию:

    SELECT sent_account_id, sent_date FROM msdb.dbo.sysmail_sentitems ;
    
  2. Если неработающий профиль не используется ни одной из перечисленных учетных записей, может оказаться, что ни одна учетная запись, доступная в профиле, не работает правильно. Для проверки отдельных учетных записей воспользуйтесь мастером настройки компонента Database Mail для создания нового профиля с единственной учетной записью и затем используйте диалоговое окно Отправка тестового сообщения, чтобы отправить почту через новую учетную запись.

  3. Для просмотра сообщений об ошибках, возвращаемых компонентом Database Mail, выполните следующую инструкцию:

    SELECT * FROM msdb.dbo.sysmail_event_log ;
    
ms187540.note(ru-ru,SQL.90).gifПримечание.
Компонент Database Mail считает почтовое сообщение отправленным, когда оно успешно доставлено на почтовый SMTP-сервер. Успешной доставке сообщения могут помешать и другие ошибки, возникшие при дальнейшей обработке (например неверный адрес получателя), но они уже не отражаются в журнале компонента Database Mail.

Настройка компонента Database Mail для повторной попытки доставки сообщения

  1. Если обнаружилось, что в работе компонента Database Mail происходят сбои из-за недоступности SMTP-сервера, можно повысить число успешных доставок путем увеличения числа попыток, предпринимаемых компонентом Database Mail при отправке каждого сообщения. Запустите мастер настройки компонента Database Mail и выберите Просмотр или изменение системных параметров. Можно также связать с профилем несколько учетных записей; в этом случае, при наличии отказоустойчивой главной учетной записи, компонент Database Mail будет использовать ее для отправки сообщений.

  2. На странице настроек системных параметров значения по умолчанию 5 для параметра Количество попыток применения учетной записи и 60 секунд для Интервала между попытками применения учетной записи означают, что доставка сообщения не удалась, если SMTP-сервер был недоступен в течение 5 минут. Увеличьте значения этих параметров чтобы продлить время ожидания в во время отправки сообщения.

ms187540.note(ru-ru,SQL.90).gifПримечание.
При массовой отправке сообщений большие значения по умолчанию могут повысить надежность, но при этом они существенно повышают потребление ресурсов, так как приводят к многократным попыткам отправки большого количества сообщений. Лучше выявите и устраните первопричину этого явления, которая может оказаться проблемой сети или SMTP-сервера, мешающей компоненту Database Mail нормально соединяться с SMTP-сервером.

Безопасность

Для устранения неполадок любого рода с компонентом Database Mail необходимо быть членом фиксированной серверной роли sysadmin. Пользователи, не являющиеся членами фиксированной серверной роли sysadmin, могут только получать сведения о сообщениях, которые они пытались отправить. Сведения о сообщениях других пользователей им недоступны.

См. также

Задачи

Устранение неполадок в работе компонента Database Mail

Основные понятия

Компонент Database Mail
Структура компонента Database Mail

Другие ресурсы

Хранимые процедуры служб Database Mail и SQL Mail (Transact-SQL)
Представления компонента Database Mail (Transact-SQL)
Мастер настройки компонента Database Mail

Справка и поддержка

Получение помощи по SQL Server 2005