Подтвердить что ты не робот

Проблемы с отправкой уведомлений по электронной почте из SQL Server 2008

У меня проблема с настройкой уведомлений по электронной почте в SQL Server 2008.

Я использую SQL Server 2008 для построения куба данных. Этот процесс состоит из нескольких заданий, которые запланированы на выполнение каждую ночь в определенное время. Чтобы проверить, выполнялось ли задание без сбоев, можно настроить уведомление по электронной почте.


(источник: Smilinginthesun.de)


(источник: Smilinginthesun.de)

К сожалению, письмо не отправляется, хотя я думаю, что правильно настроил почту базы данных.

Все руководства, которые я могу найти, просто объясняют, как настроить почту базы данных (например, http://blog.sqlauthority.com/2008/08/23/sql-server-2008-configure-database-mail-send-email-from-sql-database/), но это так.
Если я отправил письмо для проверки работоспособности (с помощью кнопки тестовой электронной почты или из сценария T-SQL), то все работает нормально, и письмо приходит. Но при использовании функции уведомления в работе она даже не создает запись sysmail_mailitems или sysmail_log.
Я также успешно отправил электронное письмо, используя sp_notify_operator. Так что настройка оператора, похоже, тоже работает. (Спасибо, Джо Стефанелли, за подсказку.)

Существует отличный обходной путь, написанный для SQL Server 2005, который также работает для меня: http://www.howtogeek.com/howto/database/sending-automated-job-email-notifications-in-sql-server-with-smtp/, но почему нельзя просто использовать эту встроенную функциональность?

Кто-нибудь знает, есть ли что-нибудь еще, чтобы эта задача уведомления по электронной почте работала правильно? Спасибо за совет.

4b9b3361

Ответ 1

Чтобы отправлять уведомления по электронной почте из заданий агента в агенте SQL Server, необходимо активировать систему сигнализации. Мы это сделали. После перезапуска агента следует использовать систему Mail Mail. К сожалению, это не работает. Агент все еще пытался достичь профиля Mapi (как в SQL 2000).

Не задано следующее значение реестра: "UseDatabaseMail"=dword:00000001
После настройки на 1 была использована почтовая система базы данных.
Вы можете сделать это на сервере SQL напрямую:

EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', N'UseDatabaseMail', N'REG_DWORD', 1

Ответ 2

Я опаздываю, но я видел, что ваш пост имеет ту же проблему.

Решение состоит в том, чтобы включить почтовый профиль для предупреждений.

Для этого:

  • Щелкните правой кнопкой мыши на "Агент SQL Server"
  • Затем "Свойства".
  • Затем перейдите в раздел "Система оповещений".
  • Отметьте поле "Включить почтовый профиль".
  • Затем "ОК".
  • Перезапустите службу агента SQL Server.

Ответ 3

Я пробовал, что ZeuG. указано и все еще не имеет успеха... затем я перезапустил агент SQL. Это то, что сделало работу по электронной почте уведомление работать для меня.

Ответ 4

Для меня SQL-почта работала нормально, когда я щелкнул правой кнопкой мыши Database Mail и сказал Send Test Email. Однако после настройки предупреждений обо всех степенях опасности и запуске RAISERROR (N'Test alert!', 20, 1) WITH LOG; ни одно письмо не было отправлено. Проблема - это учетная запись службы, в которой работает агент SQL Server. Очевидно, что виртуальная учетная запись NT Service\SQLSERVERAGENT (или независимо от вашего значения по умолчанию) не имеет прав доступа к объектам в сети, и это включает e -mail.

Чтобы исправить, измените службу, чтобы использовать локальную учетную запись в группе "Пользователи", перезапустите агент SQL Server, а затем попробуйте запустить команду, которая выдает ошибку, аналогичную приведенному выше выражению RAISERROR. Теперь вы должны получать электронное письмо.