使用SSIS Task Exec SQL任务和sp_send_mail

时间:2012-02-01 16:49:00

标签: tsql ssis

我有一个SSIS包,它循环遍历许多人,然后将一组链接附加到报告作为附件。

这一切都适用于发送邮件任务,直到达到4,000个字符限制:(

所以我试图使用sp_send_mail

让它与Execute SQL任务一起工作

我首先尝试的是简单但我无法使其工作

Paramater:User :: strPersonName 方向:输入 数据类型:VarChar 大小:-1

SQL Statement =

DECLARE @bodytext AS VARCHAR(200)

SET @bodytext = 'Good Morning' + ?

EXEC msdb.dbo.sp_send_dbmail 
    @profile_name = 'Shoop',
    @recipients = 'moonbase@hatstand.com',
    @subject = '1', 
    @body = @bodytext

我得到的结果集未正确设置通用错误

有什么想法吗? :(

2 个答案:

答案 0 :(得分:0)

您可以使用SSIS中的发送邮件任务,而不是使用sp_send_mail。我相信你在填充你的消息时所说的4000个字符限制是在表达式上,而不是在变量本身上。如果在发送邮件任务中使用MessageSourceType变量,则可以使用脚本任务构建邮件正文(允许您创建大于4000个字符的字符串)。

编辑:由于问题出在您的附件上,我发现有一件事可能是您的执行SQL任务的SQL问题,根据http://technet.microsoft.com/en-us/library/ms140355.aspx,您应该使用“?”作为ADO连接的参数标记和ADO.NET的“@”,但似乎你正在使用它们。

作为另一种选择,这里有一篇关于如何使用脚本任务和.NET发送电子邮件的博客。 http://www.mssqltips.com/sqlservertip/1753/sending-html-formatted-email-in-sql-server-using-the-ssis-script-task/

答案 1 :(得分:0)

您不需要结果集,但如果确实在SQL任务的“常规”选项卡中确保设置正确。根据我的理解,你只是传递参数数据而不返回任何东西,所以我认为你把它设置为单行而不是