Лучший отвечающий
Применение Database Mail. Сообщения "зависают" в состоянии "unsent"

Вопрос
-
MS SQL Server 2005.
Настроен account и profile.
Учетная запись почтового сервера проверена через MS Outlook.
Тестовое послание из MS SQl Server Management Studio не доходит до адресата.
Послание через sp_send_dbmail регистрируется в отправляемые msdb.dbo.sysmail_allitems,
но имеет статус "unsent".
SQL Server Agent запущен.
Функция sysmail_start_sp возвращает 1.
В LOG-е Database Mail пусто...
Первоначально все эксперименты делал под пользлователем SA.
Пользователь SA не имеет права отправлять почту и дать ему такое право не возможно.
Для отправки тестовых сообщений сделал специального пользователя. Дал ему роль "DatabaseMailUserRole". Интересно, что в диалоге отправки тестового сообщения Database Mail от имени этого пользователя долго не видел список настроенных профилей. Давал различные роли (методом тыка). В какой-то момент список профилей появился.
Из select * from msdb.dbo.sysmail_unsentitems следует, что в каждое тестовое сообщение, созданное от имени нового пользователя, последние изменения вносил пользователь SA !!!????
Что менялось, зачем? Откуда "вылез" SA ?
В руководстве по Database Mail указано, что роль DatabaseMailUserRole в базе данных msdb должна быть дана логину, от имени которого SQL Server Agent подключается к SQL Server.
А как узнать этот login?
В настройках SQL Server Agent есть login для входа в операционку.
В списке login-ов сервера есть "OP-042\SQLServer2005SQLAgentUser$OP-042$SUPIR". Ему роль "DatabaseMailUserRole" дана.
Разбираясь дальше предположил, что login, от имени которого работает Database Mail вероятно соответствует login-у, от "имени" которого подается команда:
EXEC msdb.dbo.sysmail_start_sp
Выполнил ее подключившись специально сделанным login-ом.
В LOG-е Database Mail появилось две записи с одинаковым временем с точностью до секунды:
LogID = 124 Почтовая очередь запущена под именем входа ... (записано новым login-ом)
LogID = 125 Activation failure. (записано SA)
Открыл Log собственно сервера.
В нем присутствует строка (дата и время с точностью до секунды соответствуют возникновению проблемы, описанной в предыдущем сообщении. LogID нет):
09/16/2009 11:18:19,spid77s,Unknown,The activated proc [dbo].[sp_sysmail_activate] running on queue msdb.dbo.ExternalMailQueue output the following: 'Error executing extended stored procedure: Invalid Parameter'
А что за параметр? Какое значение не нравится?
Сравнил login-ы SA и новый. Мысль дурная, но все все же ... Языки отличаются. Поменял в новом логине russian на english. Выполнил EXEC msdb.dbo.sysmail_start_sp от имени нового логина.
Почтовая очередь запущена и НИКАКИХ Activation failure !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!=
А ПОЧТА НЕ УХОДИТ .............
Из представления select * from msdb.dbo.sysmail_unsentitems
следует, что отправитель новый логин (там колонка называется send_request_user),
но "последнее слово" в сообщении (колонка last_mod_user) опять осталось за SA.
Все, дальше мыслей нет ...
Куда смотреть?
Спасибо.16 сентября 2009 г. 9:35
Ответы
-
Могу предложить настроить все заново:
---
USE master GO EXEC sp_configure 'show advanced options', 1 RECONFIGURE WITH OVERRIDE GO /****** Object: Operator [MS-SQL-Server-Admins] ******/ IF EXISTS (SELECT name FROM msdb.dbo.sysoperators WHERE name = N'MS-SQL-Server-Admins') EXEC msdb.dbo.sp_delete_operator @name=N'MS-SQL-Server-Admins' GO USE [msdb] GO /****** Object: Operator [MS-SQL-Server-Admins] ******/ EXEC msdb.dbo.sp_add_operator @name=N'MS-SQL-Server-Admins', @enabled=1, @weekday_pager_start_time=0, @weekday_pager_end_time=235959, @saturday_pager_start_time=0, @saturday_pager_end_time=235959, @sunday_pager_start_time=0, @sunday_pager_end_time=235959, @pager_days=127, @email_address=N'logs@domen.ru', @category_name=N'[Uncategorized]' GO /*****************************************************************************************/ -- Компонент Database Mail EXECUTE sp_configure 'show advanced options',1 RECONFIGURE EXECUTE sp_configure 'Database Mail XPs',1 RECONFIGURE EXEC sp_configure 'default trace enabled', 0 RECONFIGURE EXECUTE sp_configure 'show advanced options',0 RECONFIGURE GO DECLARE @email_address nvarchar(50) SELECT @email_address = @@servername + '-MSSQL@domen.ru' EXECUTE msdb.dbo.sysmail_add_account_sp @account_name = 'Administrator', @description = 'Mail account for administrative e-mail.', @replyto_address = 'LOGS@domen.ru', @email_address = @email_address, @display_name = @email_address, @mailserver_name = 'wz-exch1.ad.domen.ru', @mailserver_type = 'SMTP', @port = 25, @use_default_credentials = 0; GO EXECUTE msdb.dbo.sysmail_add_profile_sp @profile_name = 'AlertProfile', @description = 'Profile used for administrative mail.' ; GO EXECUTE msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'AlertProfile', @account_name = 'Administrator', @sequence_number = 1 ; GO EXECUTE msdb.dbo.sysmail_add_principalprofile_sp @principal_name = 'public', @profile_name = 'AlertProfile', @is_default = 1 ; GO /*****************************************************************************************/ USE [msdb] GO EXEC msdb.dbo.sp_set_sqlagent_properties @email_save_in_sent_folder=1 GO EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE' , N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent' , N'UseDatabaseMail' , N'REG_DWORD', 1 GO EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE' , N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent' , N'DatabaseMailProfile' , N'REG_SZ' , N'AlertProfile' GO EXEC master.dbo.sp_MSsetalertinfo @failsafeoperator=N'MS-SQL-Server-Admins', @notificationmethod=1 GO
---
соответственно измените адреса email, почтового сервера.
MCITP: Database Administrator- Помечено в качестве ответа АлексейАБ 17 сентября 2009 г. 5:25
16 сентября 2009 г. 13:44 -
Как правильно устранять подобные проблемы подробно описано тут: http://msdn.microsoft.com/ru-ru/library/ms188663.aspx
Рекомендую использовать для запуска службы Агента непривелегированную доменную учётную запись, в её контексте и будут уходить письма.- Предложено в качестве ответа Александр Гладченко 16 сентября 2009 г. 14:35
- Помечено в качестве ответа АлексейАБ 17 сентября 2009 г. 6:15
16 сентября 2009 г. 14:35 -
Покажите, что вернёт этот сценарий:
EXECUTE msdb.sys.sp_helprolemember 'DatabaseMailUserRole';
--EXECUTE sp_addrolemember @rolename = 'DatabaseMailUserRole',@membername = '.......';
EXECUTE msdb.dbo.sysmail_help_queue_sp @queue_type = 'Mail';
EXECUTE msdb.dbo.sysmail_help_account_sp;
EXECUTE msdb.dbo.sysmail_help_profile_sp;
EXECUTE msdb.dbo.sysmail_help_profileaccount_sp @profile_name = 'AlertProfile'
EXECUTE msdb.dbo.sysmail_help_principalprofile_sp;
SELECT * FROM msdb.dbo.sysmail_event_log
SELECT * FROM msdb.dbo.sysmail_allitems
SELECT * FROM msdb.dbo.sysmail_faileditems
GO- Помечено в качестве ответа АлексейАБ 17 сентября 2009 г. 8:37
17 сентября 2009 г. 7:17 -
Проверил доступность SMTP-сервера ping-ом.
Этого недостаточно.
Нормально.
Позвольте нам узнать реакцию на команду
TELNET АДРЕС 25
, где АДРЕС - это сетевое имя почтового сервера или IP. Для чистоты эксперимента напишите адрес так, как вы его указали в профиле DatabaseMail.
MCITP: Database Administrator- Помечено в качестве ответа АлексейАБ 22 сентября 2009 г. 4:50
17 сентября 2009 г. 14:50 -
SQL Server обновлялся, т.е. какая версия?
Пробовали службу SQL Server тоже запускать от доменной записи?- Помечено в качестве ответа АлексейАБ 22 сентября 2009 г. 4:49
18 сентября 2009 г. 7:58 -
Похоже, что служба брокера не активирует почтового клиента. Проверьте вот это: http://msdn.microsoft.com/ru-ru/library/ms189959.aspx
Да и эндпоинт создать не помешает...
USE master
GO
CREATE ENDPOINT SBEndpoint
STATE = STARTED
AS TCP
(
LISTENER_IP = ALL,
LISTENER_PORT = 9669
)
FOR SERVICE_BROKER
(
AUTHENTICATION = WINDOWS,
MESSAGE_FORWARDING = DISABLED
)
GO- Помечено в качестве ответа АлексейАБ 22 сентября 2009 г. 4:49
18 сентября 2009 г. 13:38
Все ответы
-
Могу предложить настроить все заново:
---
USE master GO EXEC sp_configure 'show advanced options', 1 RECONFIGURE WITH OVERRIDE GO /****** Object: Operator [MS-SQL-Server-Admins] ******/ IF EXISTS (SELECT name FROM msdb.dbo.sysoperators WHERE name = N'MS-SQL-Server-Admins') EXEC msdb.dbo.sp_delete_operator @name=N'MS-SQL-Server-Admins' GO USE [msdb] GO /****** Object: Operator [MS-SQL-Server-Admins] ******/ EXEC msdb.dbo.sp_add_operator @name=N'MS-SQL-Server-Admins', @enabled=1, @weekday_pager_start_time=0, @weekday_pager_end_time=235959, @saturday_pager_start_time=0, @saturday_pager_end_time=235959, @sunday_pager_start_time=0, @sunday_pager_end_time=235959, @pager_days=127, @email_address=N'logs@domen.ru', @category_name=N'[Uncategorized]' GO /*****************************************************************************************/ -- Компонент Database Mail EXECUTE sp_configure 'show advanced options',1 RECONFIGURE EXECUTE sp_configure 'Database Mail XPs',1 RECONFIGURE EXEC sp_configure 'default trace enabled', 0 RECONFIGURE EXECUTE sp_configure 'show advanced options',0 RECONFIGURE GO DECLARE @email_address nvarchar(50) SELECT @email_address = @@servername + '-MSSQL@domen.ru' EXECUTE msdb.dbo.sysmail_add_account_sp @account_name = 'Administrator', @description = 'Mail account for administrative e-mail.', @replyto_address = 'LOGS@domen.ru', @email_address = @email_address, @display_name = @email_address, @mailserver_name = 'wz-exch1.ad.domen.ru', @mailserver_type = 'SMTP', @port = 25, @use_default_credentials = 0; GO EXECUTE msdb.dbo.sysmail_add_profile_sp @profile_name = 'AlertProfile', @description = 'Profile used for administrative mail.' ; GO EXECUTE msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'AlertProfile', @account_name = 'Administrator', @sequence_number = 1 ; GO EXECUTE msdb.dbo.sysmail_add_principalprofile_sp @principal_name = 'public', @profile_name = 'AlertProfile', @is_default = 1 ; GO /*****************************************************************************************/ USE [msdb] GO EXEC msdb.dbo.sp_set_sqlagent_properties @email_save_in_sent_folder=1 GO EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE' , N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent' , N'UseDatabaseMail' , N'REG_DWORD', 1 GO EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE' , N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent' , N'DatabaseMailProfile' , N'REG_SZ' , N'AlertProfile' GO EXEC master.dbo.sp_MSsetalertinfo @failsafeoperator=N'MS-SQL-Server-Admins', @notificationmethod=1 GO
---
соответственно измените адреса email, почтового сервера.
MCITP: Database Administrator- Помечено в качестве ответа АлексейАБ 17 сентября 2009 г. 5:25
16 сентября 2009 г. 13:44 -
Как правильно устранять подобные проблемы подробно описано тут: http://msdn.microsoft.com/ru-ru/library/ms188663.aspx
Рекомендую использовать для запуска службы Агента непривелегированную доменную учётную запись, в её контексте и будут уходить письма.- Предложено в качестве ответа Александр Гладченко 16 сентября 2009 г. 14:35
- Помечено в качестве ответа АлексейАБ 17 сентября 2009 г. 6:15
16 сентября 2009 г. 14:35 -
Могу предложить настроить все заново:
Логично!
---
Указал свои значения параметров и выполнил предложмнный скрипт на другом экземпляре БД. Там Database Mail еще не использовали. Отправка тестовых сообщений работает!
В скрипте я не понял назначение команды создания "оператора" и его применения в sp_MSsetalertinfo. Вообще столкнулся с этим понятием первый раз. Самоучка я, неуч тоесть :(
Отправка почты осуществляется подсистемой Alert ? А разве не SQL Server Agent?
Где бы узнать программную структуру SQL Server-а. Понятно, что Database Mail только регистрирует почтовые сообщения. А какая подсистема, служба, сервис их отправляют?
С этим буду разбираться позже.
Для тех кто воспользуется предложенным выше скриптом следующая информация:
1. Отправку сообщения с сервера блокировал антивирус. Обратите внимание на это в вашем случае.
2. Доступ к почтовому ящику происходит от имени анонимного пользователя. Полагаю большинство почтовых серверов такого пользователя "отфутболят". В моем случае до приема сообщения почтовым сервером дело еще не дошло.
А теперь самое интересное :(
На нужном экземпляре БД применение указанного скрипта результата НЕ дало.
Есть нечто, мешающее отправке сообщений.
По аналогии с командами скрипта нашел нужные команды и удалил все свои экспериментальные профили и аккаунты. Интересно, что из SQL Server Manager это сделать не получалось.
Оставил только те, что созданы скриптом.
Вопрос остается в силе!17 сентября 2009 г. 5:45 -
Как правильно устранять подобные проблемы подробно описано тут: http://msdn.microsoft.com/ru-ru/library/ms188663.aspx
Рекомендую использовать для запуска службы Агента непривелегированную доменную учётную запись, в её контексте и будут уходить письма.
Текстом по ссылке пользовался пытаясь решить проблему самостоятельно. Там много полезной информации. НО, либо я плохо читал, либо плохо выполнял, либо что-то еще не учтено.
Сейчас мне бы очень хотелось понять, что не работает. Какая служба, сервис, функция? Сообщения в БД зарегистрированы, но их ничто не отправляет. А что\кто это должен делать? Где лог этого сервиса?
Для запуска слжбы самой СУБД и агента используется одна и та же доменная учетная запись. Наверно не привелигерованная, потому что моя личная...
Цитата "убедитесь, что внешняя программа компонента Database Mail находится в верном каталоге и учетная запись службы SQL Server имеет разрешения на ее запуск."
Программа "Database Mail" находится где требуется.
А как проверить разрешение учетной записи службы SQL Server на запуск? Я взял и просто запустил программу войдя на сервер с той самой учетной записью. Аварийных сообщений операционной системы не получил.17 сентября 2009 г. 6:15 -
Покажите, что вернёт этот сценарий:
EXECUTE msdb.sys.sp_helprolemember 'DatabaseMailUserRole';
--EXECUTE sp_addrolemember @rolename = 'DatabaseMailUserRole',@membername = '.......';
EXECUTE msdb.dbo.sysmail_help_queue_sp @queue_type = 'Mail';
EXECUTE msdb.dbo.sysmail_help_account_sp;
EXECUTE msdb.dbo.sysmail_help_profile_sp;
EXECUTE msdb.dbo.sysmail_help_profileaccount_sp @profile_name = 'AlertProfile'
EXECUTE msdb.dbo.sysmail_help_principalprofile_sp;
SELECT * FROM msdb.dbo.sysmail_event_log
SELECT * FROM msdb.dbo.sysmail_allitems
SELECT * FROM msdb.dbo.sysmail_faileditems
GO- Помечено в качестве ответа АлексейАБ 17 сентября 2009 г. 8:37
17 сентября 2009 г. 7:17 -
Покажите, что вернёт этот сценарий:
EXECUTE msdb.sys.sp_helprolemember 'DatabaseMailUserRole';
--EXECUTE sp_addrolemember @rolename = 'DatabaseMailUserRole',@membername = '.......';
EXECUTE msdb.dbo.sysmail_help_queue_sp @queue_type = 'Mail';
EXECUTE msdb.dbo.sysmail_help_account_sp;
EXECUTE msdb.dbo.sysmail_help_profile_sp;
EXECUTE msdb.dbo.sysmail_help_profileaccount_sp @profile_name = 'AlertProfile'
EXECUTE msdb.dbo.sysmail_help_principalprofile_sp;
SELECT * FROM msdb.dbo.sysmail_event_log
SELECT * FROM msdb.dbo.sysmail_allitems
SELECT * FROM msdb.dbo.sysmail_faileditems
GO
1. EXECUTE msdb.sys.sp_helprolemember 'DatabaseMailUserRole';
DbRole MemberName DatabaseMailUserRole NT AUTHORITY\SYSTEM DatabaseMailUserRole OP-042\SQLServer2005SQLAgentUser$OP-042$SUPIR DatabaseMailUserRole supir
2. EXECUTE msdb.dbo.sysmail_help_queue_sp @queue_type = 'Mail';
queue_type length state last_empty_rowset_time last_activated_time mail 30 NOTIFIED 16.09.2009 6:17 16.09.2009 6:17
3. EXECUTE msdb.dbo.sysmail_help_account_sp;
account_id name description email_address display_name replyto_address servertype servername port username use_default_credentials enable_ssl 6 SUPIR_mail_acc Mail account for SUPIR e-mail. sqlmail@ufa.ru sqlmail@ufa.ru sqlmail@ufa.ru SMTP srv20504.ufa.ru 25 null ЛОЖЬ ЛОЖЬ
4. EXECUTE msdb.dbo.sysmail_help_profile_sp;
profile_id name description 10 SUPIR_mail_Profile Profile used for SUPIR mail.
5. EXECUTE msdb.dbo.sysmail_help_profileaccount_sp @profile_name = 'SUPIR_mail_Profile'
profile_id profile_name account_id account_name sequence_number 10 SUPIR_mail_Profile 6 SUPIR_mail_acc 1
6. EXECUTE msdb.dbo.sysmail_help_principalprofile_sp;
principal_id principal_name profile_id profile_name is_default 2 guest 10 SUPIR_mail_Profile ИСТИНА
7. SELECT * FROM msdb.dbo.sysmail_event_log
126 information 16.09.2009 12:16 The mail queue was started by login "sa". null null null 16.09.2009 12:16 sa 127 information 16.09.2009 12:17 The mail queue stopped by login "sa". null null null 16.09.2009 12:17 sa 128 information 16.09.2009 12:17 Почтовая очередь запущена под именем входа "supir". null null null 16.09.2009 12:17 supir 129 error 16.09.2009 12:17 Activation failure. null null null 16.09.2009 12:17 sa 130 information 16.09.2009 12:20 Почтовая очередь запущена под именем входа "supir". null null null 16.09.2009 12:20 supir
8. SELECT * FROM msdb.dbo.sysmail_allitems
mailitem_id profile_id recipients copy_recipients blind_copy_recipients subject body body_format importance sensitivity file_attachments attachment_encoding query execute_query_database attach_query_result_as_file query_result_header query_result_width query_result_separator exclude_query_output append_query_error send_request_date send_request_user sent_account_id sent_status sent_date last_mod_date last_mod_user 70 4 AronovichAB@ufa.ru null null Database Mail Test ---222 This is a test e-mail sent from Database Mail. TEXT NORMAL NORMAL null MIME null null ЛОЖЬ ИСТИНА 256 ЛОЖЬ ЛОЖЬ 16.09.2009 12:29 supir null unsent null 16.09.2009 12:29 sa 71 4 AronovichAB@ufa.ru null null Database Mail Test profile 2 This is a test e-mail sent from Database Mail. TEXT NORMAL NORMAL null MIME null null ЛОЖЬ ИСТИНА 256 ЛОЖЬ ЛОЖЬ 16.09.2009 19:37 supir null unsent null 16.09.2009 19:37 sa 72 10 AronovichAB@ufa.ru null null Database Mail Test This is a test e-mail sent from Database Mail. TEXT NORMAL NORMAL null MIME null null ЛОЖЬ ИСТИНА 256 ЛОЖЬ ЛОЖЬ 17.09.2009 10:52 sa null unsent null 17.09.2009 10:52 sa 73 10 AronovichAB@ufa.ru null null Database Mail Test This is a test e-mail sent from Database Mail. TEXT NORMAL NORMAL null MIME null null ЛОЖЬ ИСТИНА 256 ЛОЖЬ ЛОЖЬ 17.09.2009 11:05 sa null unsent null 17.09.2009 11:05 sa
9. SELECT * FROM msdb.dbo.sysmail_faileditems
Нет записей.17 сентября 2009 г. 9:02 -
Для profile_id и account_id нет значений, это в самом деле так?
Во время тестов отключали антивирус?
Выдержка из документации: Состояние unsent означает, что внешняя программа компонента Database Mail еще не обработала электронное сообщение. Иногда она не очень быстро это делает, скорость их обработки зависит от параметров сети, времени ожидания перед повтором, объема сообщений и ресурсов SMTP-сервера. Если проблема остается, попробуйте отсылать сообщения из нескольких профилей и с нескольких SMTP-серверов.
Я бы предложил попробовать ещё разные способы авторизации SMTP.17 сентября 2009 г. 10:03 -
Для profile_id и account_id нет значений, это в самом деле так?
Во время тестов отключали антивирус?
Выдержка из документации: Состояние unsent означает, что внешняя программа компонента Database Mail еще не обработала электронное сообщение. Иногда она не очень быстро это делает, скорость их обработки зависит от параметров сети, времени ожидания перед повтором, объема сообщений и ресурсов SMTP-сервера. Если проблема остается, попробуйте отсылать сообщения из нескольких профилей и с нескольких SMTP-серверов.
Я бы предложил попробовать ещё разные способы авторизации SMTP.
account_id, profile_id есть. В приведенных выше табличках значения этих колонок отформатированы по правому краю. Получилось не наглядно.
Анивирус работал. На другой машине уже наблюдал его действие. Блокируется отправка сообщения и статус его становится "failed".
Нескольких SMTP у меня нет ...
Под разными учетными записями с разными вариантами авторизации пробовал. Может что-то делал не верно, но не помогло. Опять же, до SMTP еще очень далеко! Пусть для начала сообщение будет отправлено и блокировано антивирусом!17 сентября 2009 г. 10:19 -
проверьте, с сервера баз данных доступен почтовый сервер?
выполните в командной строке:
telnet имя_или_IP_почтового_сервера 25
MCITP: Database Administrator17 сентября 2009 г. 10:21 -
проверьте, с сервера баз данных доступен почтовый сервер?
выполните в командной строке:
telnet имя_или_IP_почтового_сервера 25
MCITP: Database Administrator17 сентября 2009 г. 10:44 -
Ильгиз и Александ (простите, не знаю отчеств), еще раз спасибо за помощь.
С антивирусом, экраном и т.д. - проблем нет. Там разберутся соответствующие специалисты и что делать они знают.
Хотел бы обратить ваши внимание на тот факт, что не происходит отправка сообщений!
До соединения с SMTP-сервером дело просто не доходит.
На другой машине после настройки предложенным скриптом отправка сообщения выполнилась. Да, сообщение адресату не дошло и в журнале MS SQL Server сообщение имеет статус "failed". Оно ОТПРАВЛЯЛОСЬ !!!
А вот на другом сервере сообщения "unsent" и все ....17 сентября 2009 г. 12:46 -
Дык, мы же Вам и предлагаем выяснить причину, по которой отправка не происходит. Т.е. статус UNSENT говорит о том, что служба Database Mail работает, но не отправляет сообщения. Например, так может быть, если недоступен почтовый сервер, или брандмауэр не даёт выйти в сеть...
Попробуйте всётаки сделать то, что просил Ильгиз?17 сентября 2009 г. 13:41 -
Проверил доступность SMTP-сервера ping-ом.
Нормально.
Да и как иначе, если я с сервера Outlook-ом проверяю учетную запись.
Я понял и так написано в тексте на который выше была сслыка, что "unsent" состояние имеют сообщения, которые стоят в очереди и не обработаны. Это подтверждается экспериментом на втором сервере. Повторюсь, там сообщение до адресата не дошло, но была попытка его отправить. Это зафиксировал антивирус, это зафиксировал сам SQL Server, записав в сообщение состояние "failed".
Статус "UNSENT" говорит о том, что работает часть СЕРВЕРА, отвечающая за регистрацию сообщения и постановку его в очередь. А вот сохранение состояния "UNSENT" бесконечно долго (есть сообщения 2008 года), говорит о том, что отправляющая часть подсистемы Database Mail - НЕ работает. Отправлять должна внешняя программа (exe), физическое положение которой меня выше просили проверить. Но она не "висит" в памяти постоянно. Она активируется каким-то сервисом по какому-то событию, отправляет сообщения из очереди и "живет" в памяти некоторое заданное время после этого. А потом выгружается до новой активации.
В моем случае не происходит это активирующее событие, либо не активирована служба, запускающая внешнюю программу (exe) или вся эта цепочка где-то прерывается по причине проблем с правами доступа, каких-то иных проблем.
Вот только участников этий цепочки и места, где они оставляют следы (логи, протоколы ...) я не знаю.
Полдскажите, пожалуйста.17 сентября 2009 г. 14:03 -
Проверил доступность SMTP-сервера ping-ом.
Этого недостаточно.
Нормально.
Позвольте нам узнать реакцию на команду
TELNET АДРЕС 25
, где АДРЕС - это сетевое имя почтового сервера или IP. Для чистоты эксперимента напишите адрес так, как вы его указали в профиле DatabaseMail.
MCITP: Database Administrator- Помечено в качестве ответа АлексейАБ 22 сентября 2009 г. 4:50
17 сентября 2009 г. 14:50 -
Проверил доступность SMTP-сервера ping-ом.
Этого недостаточно.
Нормально.
Позвольте нам узнать реакцию на команду
TELNET АДРЕС 25
, где АДРЕС - это сетевое имя почтового сервера или IP. Для чистоты эксперимента напишите адрес так, как вы его указали в профиле DatabaseMail.
MCITP: Database Administrator
Реакция на команду Telnet ....
220 mail.ufa.ru Mail Server Fri 18 Sep 2009 10:33:33 +060018 сентября 2009 г. 4:38 -
Продолжая "рыться" в SQL Servere сегодня перезапустил SQL Agent-а.
В протоколе Agent-а появлилось:
Error,,[364] The Messenger service has not been started - NetSend notifications will not be sent,,,,,
Случайно, не Messenger активирует внешнюю прогу DatabaseMail?
Может эта информация поможет ....18 сентября 2009 г. 5:43 -
Продолжая "рыться" в SQL Servere сегодня перезапустил SQL Agent-а.
В протоколе Agent-а появлилось:
Error,,[364] The Messenger service has not been started - NetSend notifications will not be sent,,,,,
Случайно, не Messenger активирует внешнюю прогу DatabaseMail?
Может эта информация поможет ....
Проверил лог сервера, где потправка сообщений работает.
Там такая же ошибка Error,,[364] The Messenger ...
Получается Messenger не при чем.18 сентября 2009 г. 6:57 -
SQL Server обновлялся, т.е. какая версия?
Пробовали службу SQL Server тоже запускать от доменной записи?- Помечено в качестве ответа АлексейАБ 22 сентября 2009 г. 4:49
18 сентября 2009 г. 7:58 -
Изначально основной и Agent сервисы SQL Server-а на проблемной машине работали под моей доменной записью. А вот на машине, где отправка работает - под системной учетной записью.
Сегодня поставил эксперимент - перевел сервисы проблемного сервера под системную учетную запись.
Эффекта сразу не увидел.
Не понимаю что значит "системная учетная запись". На машине их 7 штук. Посмотрел учетные данные регистрируемых сообщений. Получается, что учетная запись - моя же. Та с которой я вхожу на машину. Бред какой-то ...
Ну да ладно ...
Далее "сверил" параметры своего пользователя на машинах.
На проблемной такого в списках не значится. Добавил и дал ему права локального админа.
Ничего не изменилось.
А потом взял и запустил ручками DatabaseMail90.exe.
О ЧУДО, сообщения обработались !!!!!!!!!!!!!!!!!
Если раньше, при проверке прав на запуск DatabaseMail90.exe, окно программы мелькнуло и пропало, то теперь оно "жило" на экране достаточно долго.
В логе антивируса появилось две записи о блокировке. Не понятно почему только две. Ожидающих записей больше десятка накопилось.
Вот только статус записей в sysmail_allitems не изменился.
"Кто же" таки должен запускать DatabaseMail90.exe? Где его лог?
Подскажите что знаете об этом "звере"?18 сентября 2009 г. 11:38 -
Похоже, что служба брокера не активирует почтового клиента. Проверьте вот это: http://msdn.microsoft.com/ru-ru/library/ms189959.aspx
Да и эндпоинт создать не помешает...
USE master
GO
CREATE ENDPOINT SBEndpoint
STATE = STARTED
AS TCP
(
LISTENER_IP = ALL,
LISTENER_PORT = 9669
)
FOR SERVICE_BROKER
(
AUTHENTICATION = WINDOWS,
MESSAGE_FORWARDING = DISABLED
)
GO- Помечено в качестве ответа АлексейАБ 22 сентября 2009 г. 4:49
18 сентября 2009 г. 13:38 -
Добрый день, Алексей.
Долго бился с этой проблемой и наткнулся на этот пост. Проделал все, что здесь сказано, но результат - 0. Потом решил руками запустить DatabaseMail.exe (MS SQL Server 2016) и появилось сообщение о нехватке .NET Framework 3.5. Доставил этот компонент, перезапустил SQL Agent и вуаля!
26 июня 2017 г. 11:58