2012-02-01 146 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任務的常規選項卡中設置了正確的話。根據我的理解,您只是傳遞參數數據而不返回任何內容,所以我認爲您已將其設置爲單排而不是