Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: SQL Server Управляемый экземпляр SQL Azure
Устранение неполадок с компонентом Database Mail включает проверку следующих основных областей системы Database Mail. Эти процедуры перечислены в логическом порядке, однако порядок выполнения может быть любым другим.
Разрешения
Для разбора всех аспектов компонента Database Mail необходимо быть членом фиксированной роли сервера sysadmin. Пользователи, не являющиеся членами предопределенных ролей сервера sysadmin , могут получать только сведения о сообщениях электронной почты, которые они пытаются отправить, а не о сообщениях электронной почты, отправленных другими пользователями.
Проверьте, включен ли сервис Service Broker для msdb
Для работы Database Mail необходимо, чтобы компонент Service Broker был включен в базе данных msdb.
В SQL Server Management Studio подключитесь к экземпляру SQL Server с помощью окна редактора запросов. Проверьте, включен ли Service Broker на
msdb, используя следующий скрипт T-SQL:SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb' ; -- should be 1- Если этот параметр включен, перейдите к проверке, является ли почта базы данных включенной и убедитесь, что почта базы данных запущена.
- Если этот параметр не включен, необходимо включить брокер служб.
В следующем примере скрипта требуется монопольный доступ к
msdbсистемным базам данных, поэтому это может оказаться невозможным для выполнения в течение типичных рабочих часов.Остановите службу агента SQL Server, чтобы компонент Service Broker смог получить необходимую блокировку.
Выполните следующую команду, чтобы включить Service Broker в
msdb. Для получения дополнительной информации см. ALTER DATABASE ... SET ENABLE_BROKER.ALTER DATABASE msdb SET ENABLE_BROKER;Перезапустите службу агента SQL Server.
Убедитесь, что почта базы данных включена
В SQL Server Management Studio подключитесь к экземпляру SQL Server с помощью окна редактора запросов. Убедитесь, что служба Database Mail включена, используя следующий код:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure; GOВ области результатов убедитесь, что
run_valueдля XPs Database Mail (параметр конфигурации сервера) задано значение1.- Если
run_valueявляется1, перейдите к шагу проверка, что почта базы данных запущена. - Если
run_valueне1, Database Mail не включена.
Компонент Database Mail не включен автоматически, чтобы уменьшить количество функций, доступных для атаки злоумышленником. Дополнительные сведения см. в разделе Surface Area Configuration (Конфигурация контактной зоны).
- Если
Если вы решите, что необходимо включить Database Mail, выполните следующий код:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure 'Database Mail XPs', 1; GO RECONFIGURE; GOЧтобы восстановить процедуру
sp_configureдо состояния по умолчанию, которое не отображает дополнительные параметры, выполните следующий код:sp_configure 'show advanced', 0; GO RECONFIGURE; GO
Убедитесь, что служба отправки почты базы данных запущена
Внешняя программа Database Mail активируется при наличии электронных сообщений, подлежащих обработке. Если в течение указанного времени ожидания сообщений для отправки нет, программа завершает работу.
В SQL Server Management Studio подключитесь к экземпляру SQL Server с помощью окна редактора запросов. Чтобы проверить, запущена ли внешняя программа Database Mail, выполните следующую инструкцию:
EXEC msdb.dbo.sysmail_help_status_sp;Если состояние Database Mail не
STARTED, выполните следующую инструкцию, чтобы запустить его:EXEC msdb.dbo.sysmail_start_sp;Если запущена внешняя программа компонента Database Mail, проверьте состояние очереди почты с помощью следующей инструкции:
EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail';Очередь почты должна иметь состояние
RECEIVES_OCCURRING. Очередь состояния может отличаться от момента до момента. Если состояние очереди почты неRECEIVES_OCCURRING, попробуйте перезапустить очередь. Остановите очередь при помощи следующей инструкции.EXEC msdb.dbo.sysmail_stop_sp;Запустите очередь при помощи следующей инструкции.
EXEC msdb.dbo.sysmail_start_sp;Примечание.
Используйте столбец
lengthв результирующем набореsysmail_help_queue_sp, чтобы определить количество сообщений электронной почты в очереди почты.
Правильно ли настроены пользователи для отправки почты?
Чтобы отправить Database Mail, пользователи должны быть членами роли базы данных DatabaseMailUserRole в
msdbбазе данных. Члены роли сервера sysadmin и ролиmsdbdb_owner автоматически входят в роль DatabaseMailUserRole. Чтобы перечислить все остальные члены DatabaseMailUserRole , выполните следующую инструкцию:EXEC msdb.sys.sp_helprolemember 'DatabaseMailUserRole';Чтобы добавить пользователей в роль DatabaseMailUserRole , используйте следующую инструкцию:
USE msdb; GO sp_addrolemember @rolename = 'DatabaseMailUserRole' ,@membername = '<database user>';Для отправки сообщений через компонент Database Mail пользователям необходим доступ как минимум к одному из его профилей. Для получения списка пользователей (участников) и профилей, к которым у них есть доступ, выполните следующую инструкцию:
EXEC msdb.dbo.sysmail_help_principalprofile_sp;Используйте мастер настройки компонента Database Mail для создания профилей и предоставления доступа к профилям пользователям.
Влияют ли проблемы на некоторые или все учетные записи?
Если вы определили, что некоторые, но не все профили могут отправлять почту, у вас могут возникнуть проблемы с учетными записями Database Mail, используемыми профилями проблем.
Чтобы определить, какие из учетных записей успешно отправляют почтовые сообщения, выполните следующую инструкцию:
SELECT sent_account_id, sent_date FROM msdb.dbo.sysmail_sentitems;Если нерабочий профиль не использует ни одну из перечисленных учетных записей, возможно, что все учетные записи, доступные для профиля, не работают должным образом. Для проверки отдельных учетных записей воспользуйтесь мастером настройки компонента Database Mail для создания нового профиля с единственной учетной записью и затем используйте диалоговое окно "Отправка тестового сообщения", чтобы отправить почту через новую учетную запись.
Для просмотра сообщений об ошибках, возвращаемых компонентом Database Mail, выполните следующую инструкцию:
SELECT * FROM msdb.dbo.sysmail_event_log;Примечание.
Компонент Database Mail считает почтовое сообщение отправленным, когда оно успешно доставлено на почтовый SMTP-сервер. Успешной доставке сообщения могут помешать и другие ошибки, возникшие при дальнейшей обработке (например неверный адрес получателя), но они уже не отражаются в журнале компонента Database Mail.
Повторите попытку доставки сообщения
Если вы определили, что почта базы данных завершается ошибкой, так как SMTP-сервер не может быть надежно достигнут, вы можете увеличить скорость доставки почты, увеличив количество попыток отправки каждого сообщения. Запустите мастер настройки компонента Database Mail и выберите "Просмотр или изменение системных параметров". Кроме того, можно связать больше учетных записей с профилем, чтобы при отказе основной учетной записи Database Mail использовала резервную учетную запись для отправки сообщений электронной почты.
На странице "Настройка системных параметров" значения по умолчанию в пять раз для попыток повторных попыток учетной записи и 60 секунд для задержки повторных попыток учетной записи означает, что доставка сообщений завершится ошибкой, если SMTP-сервер не может быть достигнут в течение 5 минут. Увеличьте значения этих параметров, чтобы продлить время до сбоя доставки сообщения.
Примечание.
При отправке большого количества сообщений большие значения по умолчанию могут повысить надежность, но значительно увеличит использование ресурсов, так как многие сообщения пытаются доставляться снова и снова. Устраните коренную проблему, разрешив проблему с сетью или SMTP-сервером, которая мешает Database Mail своевременно соединяться с SMTP-сервером.