Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Гулин Федор Member Откуда: МИНСК Сообщений: 1292 |
SQL 2012 Имею жоб (Не мой) на к-м на 2 шаге (раньше T-sql , сейчас переофрмил как процедуру 1 в 1 ) идет посылка почты через sp_send_dbmail в цикле курсора Ообычно все работает хорошо, но иногда присылаютя одна и та же почта несклоько раз собственно в этом и баг к-й я должен пофиксить open v_cur fetch next from v_cur into @v_ ... while @@fetch_status = 0 begin ... exec msdb..sp_send_dbmail @profile_name = @v_profile , @recipients = @v_recipients , @subject = @v_subject , @body = @v_body fetch next from v_cur into @v_ ... end---- ( с разных профилей ) Я искал ошибку в логике формирования курсора - но похоже что там все ок. А вот в самом жобе стоит на этом шаге кол-во попыток 5 (через 5 минут) Вопрос - скажем если собьтется отправка почты в середине цикла (скажем не верный профиль, или другая какая-то ошибка во время отправки ) [SQLSTATE 01000] (Message 0) profile name is not valid [SQLSTATE 42000] (Error 14607). (или скажем какая-то инструкция ПОСЛЕ отправки почты ) То правильно ли я понимаю что шаг будет выполнен целиком с начала пойдет отправка писем до той самой ошибки ? ps почему не могу проверить сам - потому что почта уходит на большое кол-во адресов и рассылать Спам нельзя |
7 авг 14, 17:02 [16413135] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Разумеется с начала. Ведь это параметр шага джоба, а не какой-то команды в его теле |
||
7 авг 14, 17:09 [16413183] Ответить | Цитировать Сообщить модератору |
Гулин Федор Member Откуда: МИНСК Сообщений: 1292 |
Glory, Вот послалась почта 10 раз по коду (5401199) я вывожу print в теле отла. инфу по '(5401199)' смтрю инфу аналог. view History : SELECT retries_attempted cnt1 , run_date d1 , run_time tm1 , MESSAGE M1 , * FROM msdb.dbo.SYSJOBHISTORY WHERE job_id = ( SELECT job_id FROM msdb.dbo.sysjobs WHERE name = 'suspend_data_processing' ) -- AND run_date = 20140724 AND CHARINDEX ( '(5401199)' , MESSAGE ) != 0 AND step_id =2 ORDER BY instance_id DESC; 1 запись - ну хоть ты тресни были сегодня сбои посредени цикла посылки но по идее если выполнилось ДО сбоя - ТО PRINT должен был вывсти этот код |
7 авг 14, 17:31 [16413361] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Вы о чем Вы 10 раз выполнили msdb..sp_send_dbmail ? Или в результате одного выполнения msdb..sp_send_dbmail отправилось 10 мейлов ? |
||
7 авг 14, 17:35 [16413387] Ответить | Цитировать Сообщить модератору |
Гулин Федор Member Откуда: МИНСК Сообщений: 1292 |
я не вижу посланной почты мне оттуда прислали что пришла почта 10 раз (тут 10 не обяз.число - важно что много ) получателю - нет основнаия не верить выяснить почему в базе данных все ОК (логику я уже 10 раз проверял) посылалась инфа по 15 кодам в середине были сбои из за неправильного профиля этот код в начале логично что мог быть дублях но если это так то почему нет этого кода в инфе выводимой print в цикле в пред. запросе ? |
||||
7 авг 14, 17:42 [16413419] Ответить | Цитировать Сообщить модератору |
Гулин Федор Member Откуда: МИНСК Сообщений: 1292 |
точнее этот код присутвтует 1 раз в том шаге к-й завершился успешно - он там есть а в пред. шагах где был failure его нет |
7 авг 14, 17:44 [16413430] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Вы видите логи вашей почты. |
||
7 авг 14, 17:48 [16413450] Ответить | Цитировать Сообщить модератору |
Гулин Федор Member Откуда: МИНСК Сообщений: 1292 |
я вижу View history это имелось ввиду ? или где думаю что возможно права есть - ( по кр. мере на скл-сервер ) возможно даже через RDC могу долезть |
||||
7 авг 14, 17:50 [16413465] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8300 |
Надо смотреть представления серии msdb.dbo.sysmail........ будет понятно когда и что отсылалось. |
7 авг 14, 18:06 [16413534] Ответить | Цитировать Сообщить модератору |
Гулин Федор Member Откуда: МИНСК Сообщений: 1292 |
СПС SELECT top 300 sent_date dat1 , subject subj , from_address from1 , * FROM msdb.dbo.sysmail_mailitems a where 1=1 and subject = ' ...(5401199)' order by sent_date desc дейстивептльно 10 раз - и через 5 минут - так же как интвервал - значит все таки там проблема |
||
7 авг 14, 18:27 [16413612] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8300 |
Возможно, distinct отбор в курсор поможет. |
7 авг 14, 18:36 [16413645] Ответить | Цитировать Сообщить модератору |
Гулин Федор Member Откуда: МИНСК Сообщений: 1292 |
Есть он там - я сразу ТОЖЕ ГРЕШИЛ на логику дело похоже в попытках - 90% (там 5 мин между посылками почты - как раз интервал) не могу найти правда объясниния почему в msdb.dbo.SYSJOBHISTORY нет инфы по коду в поле message в тех что зафейлились print то стоят вроде как - смотрю еще раз логику |
||
7 авг 14, 18:47 [16413683] Ответить | Цитировать Сообщить модератору |
daw Member Откуда: Муром -> Москва Сообщений: 7381 |
а места-то для них хватает? в message 1024 символа всего. |
||
8 авг 14, 09:56 [16415352] Ответить | Цитировать Сообщить модератору |
Гулин Федор Member Откуда: МИНСК Сообщений: 1292 |
да - это одна из проблем - print не Все выводятся опять вылез этот баг в прошлый раз - я поставил инсерт в таблицу в том же цикле после посылки мейла для каждой записи (было после цикла целиком) и когда сбивался один мейл - то в след. раз те что до сбившегося посылались по новой пришла почта 3 раза - мне прислали в атачментах select * from rpt.dbo.suspend_notifications where id = '4611683' одна запись в msdb.dbo.sysmail_mailitems тоже одна для id = '4611683' правда sent_status=2 - failed msdb.dbo.sysmail_faileditems пустое интервалы в почте между посьмами я вижу 5 минут - как в попытках жоба к-х тоже 3 вот сижу и чешу репу - думая может ли sent_status=2 - failed - быть причиной 3-й посылки почты и где что искать |
||||
20 авг 14, 12:08 [16467318] Ответить | Цитировать Сообщить модератору |
Гулин Федор Member Откуда: МИНСК Сообщений: 1292 |
exec msdb.dbo.sysmail_help_configure_sp paramname paramvalue description AccountRetryAttempts 3 Number of retry attempts for a mail server AccountRetryDelay 60 Delay between each retry attempt to mail server DatabaseMailExeMinimumLifeTime 600 Minimum process lifetime in seconds DefaultAttachmentEncoding MIME Default attachment encoding LoggingLevel 2 Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 MaxFileSize 20000000 Default maximum file size ProhibitedExtensions exe,dll,vbs,js Extensions not allowed in outgoing mails кол-впо попыток 3 - вот и дубляж пошел а почему почта не доходит - а хз в цикле идет бывает 100 - часть 1 часть 2 |
21 авг 14, 17:15 [16475657] Ответить | Цитировать Сообщить модератору |
Гулин Федор Member Откуда: МИНСК Сообщений: 1292 |
http://social.msdn.microsoft.com/Forums/sqlserver/en-US/48a9ea89-7698-4624-8581-8392156aed07/problem-with-sending-mail-via-database-mail а вот и ответ http://social.msdn.microsoft.com/Forums/sqlserver/en-US/48a9ea89-7698-4624-8581-8392156aed07/problem-with-sending-mail-via-database-mail I had a similar issue. I could send emails within my domain ex: abc.com but NOT to another domain xyz.com email address. SQL 2005 using DB Mail. Error Message was: The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 2 (2009-11-30T09:44:39). Exception Message: Cannot send mails to mail server. (Mailbox unavailable. The server response was: 5.7.1 Unable to relay for 1test23@hotmail.com). Нашел в логах ошибок фразу выделенную жирным а дальше гоглом вот скл - вдруг кому пригодтия SELECT sent_date dat1 , send_request_date d2 , a.mailitem_id m_id , b.description err_descr , sent_status , sent_account_id , subject subj --, from_address from1 , * FROM msdb.dbo.sysmail_mailitems a LEFT join msdb.dbo.sysmail_log B on B.mailitem_id = a.mailitem_id where 1=1 --and send_request_date > sent_date and profile_id != 2 and sent_date >= '2014-08-21' order by sent_date desc |
21 авг 14, 18:22 [16476039] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |