Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
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]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
Glory
Member

Откуда:
Сообщений: 104751
Гулин Федор
То правильно ли я понимаю что шаг будет выполнен целиком с начала
пойдет отправка писем до той самой ошибки ?

Разумеется с начала. Ведь это параметр шага джоба, а не какой-то команды в его теле
7 авг 14, 17:09    [16413183]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
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]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
Glory
Member

Откуда:
Сообщений: 104751
Гулин Федор
Вот послалась почта 10 раз по коду (5401199)
я вывожу print в теле отла. инфу по '(5401199)'

Вы о чем
Вы 10 раз выполнили msdb..sp_send_dbmail ?
Или в результате одного выполнения msdb..sp_send_dbmail отправилось 10 мейлов ?
7 авг 14, 17:35    [16413387]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
Glory
Гулин Федор
Вот послалась почта 10 раз по коду (5401199)
я вывожу print в теле отла. инфу по '(5401199)'

Вы о чем
Вы 10 раз выполнили msdb..sp_send_dbmail ?
Или в результате одного выполнения msdb..sp_send_dbmail отправилось 10 мейлов ?


я не вижу посланной почты
мне оттуда прислали что пришла почта 10 раз (тут 10 не обяз.число - важно что много ) получателю - нет основнаия не верить
выяснить почему
в базе данных все ОК (логику я уже 10 раз проверял)

посылалась инфа по 15 кодам
в середине были сбои из за неправильного профиля
этот код в начале
логично что мог быть дублях
но если это так то почему нет этого кода в инфе выводимой print в цикле в пред. запросе ?
7 авг 14, 17:42    [16413419]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
точнее этот код присутвтует 1 раз в том шаге к-й завершился успешно - он там есть
а в пред. шагах где был failure его нет
7 авг 14, 17:44    [16413430]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
Glory
Member

Откуда:
Сообщений: 104751
Гулин Федор
я не вижу посланной почты

Вы видите логи вашей почты.
7 авг 14, 17:48    [16413450]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
Glory
Гулин Федор
я не вижу посланной почты

Вы видите логи вашей почты.


я вижу View history
это имелось ввиду ?

или где
думаю что возможно права есть - ( по кр. мере на скл-сервер )
возможно даже через RDC могу долезть
7 авг 14, 17:50    [16413465]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9184
Надо смотреть представления серии msdb.dbo.sysmail........

будет понятно когда и что отсылалось.
7 авг 14, 18:06    [16413534]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
Владислав Колосов
Надо смотреть представления серии msdb.dbo.sysmail........

будет понятно когда и что отсылалось.




СПС

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]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9184
Возможно, distinct отбор в курсор поможет.
7 авг 14, 18:36    [16413645]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
Владислав Колосов
Возможно, distinct отбор в курсор поможет.


Есть он там - я сразу ТОЖЕ ГРЕШИЛ на логику

дело похоже в попытках - 90% (там 5 мин между посылками почты - как раз интервал)
не могу найти правда объясниния почему в msdb.dbo.SYSJOBHISTORY

нет инфы по коду в поле message в тех что зафейлились
print то стоят вроде как - смотрю еще раз логику
7 авг 14, 18:47    [16413683]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
Гулин Федор
не могу найти правда объясниния почему в msdb.dbo.SYSJOBHISTORY
нет инфы по коду в поле message в тех что зафейлились
print то стоят вроде как - смотрю еще раз логику


а места-то для них хватает? в message 1024 символа всего.
8 авг 14, 09:56    [16415352]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
daw
Гулин Федор
не могу найти правда объясниния почему в msdb.dbo.SYSJOBHISTORY
нет инфы по коду в поле message в тех что зафейлились
print то стоят вроде как - смотрю еще раз логику


а места-то для них хватает? в message 1024 символа всего.


да - это одна из проблем - 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]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
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]     Ответить | Цитировать Сообщить модератору
 Re: sp_send_dbmail в цикле в шаге жоба с большим кол-вом попыток  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
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 Ответить