在没有抛出任何错误的情况下,sp_send_dbmail在执行SQL任务中未执行。

3

我是SSIS的新手。在我的一个存储过程中执行sp_send_dbmail时出现问题,该存储过程由在SSIS中运行的Execute SQL任务运行。主要问题是,即使我运行此SP的配置文件不存在,它也不会抛出任何错误并成功完成。我怀疑存在配置问题,但我无法诊断。

我发现我的暂存服务器上未配置SMTP。这可能是唯一的原因吗?即使如此,它也应该至少抛出一个错误,但是在日志中,我没有看到任何与SMTP相关的错误消息。

此外,如果我直接通过SQL运行此SP,则会出现“配置文件不存在”错误。但是当我通过SSIS(执行SQL任务)运行相同的SP时,它会成功执行。

对此问题的任何指导都将非常有帮助。

以下是我调用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
sp_send_dbmail 仅仅是将邮件放入队列,不会尝试进行投递,也不会验证电子邮件配置文件,并且无法引发您抱怨缺失的任何错误。
在此处阅读如何检查已排队的电子邮件的状态: 检查使用 Database Mail 发送的电子邮件消息的状态:
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条记录。这意味着SP没有运行代码的那部分。 此外,如果我直接通过SQL运行此SP,则会出现“配置文件不存在”的错误。但是当我通过SSIS运行相同的SP(执行SQL任务)时,它可以成功执行。请建议。 - Pratibha Gupta

0

你的错误很明显需要什么。首先,创建一个配置文件并记录您将在向导中输入的所有值。指南将帮助您正确创建配置文件。

一旦您已经验证了dbmail配置文件已经设置好,现在是时候进行测试了。如果您无法通过存储过程发送电子邮件,我想与AD管理员或负责设置电子邮件服务器的人交谈。这是为了确保您可以匿名发送电子邮件并处理任何潜在的中继服务器问题。希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接