sp_send_dbmail не выполняется при выполнении задачи sql, не выдавая никакой ошибки - PullRequest
3 голосов
/ 24 марта 2019

Я новичок в SSIS. Я столкнулся с проблемой выполнения sp_send_dbmail в одной из моих хранимых процедур, которая выполняется задачей «Выполнение SQL» в службах SSIS. Основная проблема заключается в том, что он не выдает никаких ошибок и успешно завершает свою работу, даже если профиль, с которым я работаю, не существует. Я подозреваю, что есть проблема конфигурации, но я не могу диагностировать это.

Я обнаружил, что SMTP не настроен на моем промежуточном сервере. Может ли это быть единственной причиной? Даже если это так, он должен по крайней мере выдать ошибку, но в журналах я не вижу сообщений об ошибках для того же.

Также, если я запускаю этот SP напрямую через SQL, я получаю сообщение об ошибке «Профиль не существует». Но когда я запускаю тот же SP через SSIS (выполнить задачу sql), он выполняется успешно.

Любое руководство по этому вопросу может быть очень полезным.

Вот как я звоню sp_send_dbmail.

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Stagging Trigger',
@recipients = 'myemailID@test.com',
@subject = 'this is the SP to send mail from SP'

Ответы [ 2 ]

3 голосов
/ 24 марта 2019

sp_send_dbmail ставит в очередь только почту. Не пытается доставить, не проверяет профиль электронной почты, не может вызвать ни одной из ошибок, на которые вы жалуетесь.

Прочтите здесь, как проверить статус сообщений электронной почты, находящихся в очереди: Проверить статус сообщений электронной почты, отправленных с почтой базы данных :

USE msdb ;  
GO  

-- Show the subject, the time that the mail item row was last  
-- modified, and the log information.  
-- Join sysmail_faileditems to sysmail_event_log   
-- on the mailitem_id column.  
-- In the WHERE clause list items where danw was in the recipients,  
-- copy_recipients, or blind_copy_recipients.  
-- These are the items that would have been sent  
-- to danw.  

SELECT items.subject,  
    items.last_mod_date  
    ,l.description FROM dbo.sysmail_faileditems as items  
INNER JOIN dbo.sysmail_event_log AS l  
    ON items.mailitem_id = l.mailitem_id  
WHERE items.recipients LIKE '%danw%'    
    OR items.copy_recipients LIKE '%danw%'   
    OR items.blind_copy_recipients LIKE '%danw%'  
GO  

Другие статьи по теме:

0 голосов
/ 25 марта 2019

Ваша ошибка довольно ясна в том, что требуется.Прежде всего, создайте профиль и запишите все значения, которые вы будете вводить в мастере. Это руководство поможет вам правильно создать профиль.

После того, как вы убедились, что профиль dbmail настроен, самое время проверить его.Если вы не можете отправить электронное письмо через сохраненный процесс, я бы хотел поговорить с администратором AD или лицом, ответственным за настройку почтового сервера.Это сделано для того, чтобы вы могли анонимно отправлять электронные письма и решать любые возможные проблемы с сервером ретрансляции.Надеюсь, это поможет.

...