2012-02-01 102 views
1

我有一个SSIS包循环通过一些人,然后附加一组链接到报告作为附件。使用SSIS任务执行SQL任务与sp_send_mail

这一切工作正常与发送邮件任务,直到我打了4000个字符的限制:(

所以我试图让这与执行SQL任务工作,可使用sp_send_mail

我想一些简单的第一,但我不能让它工作

Paramater:用户:: strPersonName 方向:输入 数据类型:为VarChar 尺寸:-1

SQL语句=

DECLARE @bodytext AS VARCHAR(200) 

SET @bodytext = 'Good Morning' + ? 

EXEC msdb.dbo.sp_send_dbmail 
    @profile_name = 'Shoop', 
    @recipients = '[email protected]', 
    @subject = '1', 
    @body = @bodytext 

我得到的结果集没有正确设置一般错误

任何想法? :(

回答

0

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

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

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

+0

它的确如此,但我的问题是附件。当把它们合并成它们时,它们变成超过4,000个字符(需要成为一个表达式),所以我强迫它们根据if语句变成2个表达式。如果连接它们,如果失败(由于限制),所以我认为如果通过SP尝试会给我更多的灵活性? – 2012-02-02 08:33:17

+0

啊,我明白了。我为你更新了我的答案。 – mellowgeek 2012-02-02 13:21:05

0

您不需要结果集,但是如果确实在SQL任务的常规选项卡中设置了正确的话。根据我的理解,您只是传递参数数据而不返回任何内容,所以我认为您已将其设置为单排而不是