我有一個SSIS包運行幾個SQL存儲過程,文件任務和一個XML和腳本任務。最終的腳本任務發送一個包含html表格的電子郵件,附加的excel文件和一個電子郵件正文。我有一個變量,用於每天唯一地標記excel文件,以及唯一標記電子郵件的主題行。這個變量只是當前的日期。但是,日期最初是在變量的值中「硬編碼」的,但我決定添加一個執行SQL任務,該任務返回並格式化當前日期,然後填充該日常變量。我遇到的問題是,當變量的值字段爲空時,發送電子郵件的腳本任務失敗。即使它不是空的,腳本任務也會失敗。只有當輸入當前日期值時它纔會成功 - 所以它只在該值等於填充變量的SQL Task的返回值時才起作用。但是,腳本任務抓取SQL Task的返回值,而不是變量的「硬編碼」值。我知道這一點,因爲我可以在變量的值部分編寫「2013年8月,2013年」(無上限),並且電子郵件和文件擴展名中使用的值仍然爲2013年8月23日(大寫) - 準確的返回值SQL任務。我的問題是,在我的研究中,我沒有找到很多有用的信息,是「爲什麼會發生這種情況?」不得不每天寫入這個值都會使得SQL Task [填充變量]在那裏開始。此外,請注意,當我最初添加SQL任務時,即使使用空變量值,程序包也會成功。直到我對這個軟件包做了幾個補充之後,我才遇到了這個困境。任何意見,建議和意見將不勝感激。非常感謝你。SSIS字符串變量失敗腳本任務
發生故障的腳本任務的代碼如下: 每日可變我說的被命名爲「InternalStr_FieldingDate」
public void Main()
{
String EmailMsgBody = String.Format("<HTML><BODY><P>{0}</P><P>{1}</P></BODY></HTML>"
, Dts.Variables["Config_SMTP_MessageSourceText"].Value.ToString()
, Dts.Variables["InternalStr_CountResultAfterXSLT"].Value.ToString());
MailMessage EmailCountMsg = new MailMessage(Dts.Variables["Config_SMTP_From"].Value.ToString().Replace(";", ",")
, Dts.Variables["Config_SMTP_Success_To"].Value.ToString().Replace(";", ",")
, Dts.Variables["Config_SMTP_SubjectLinePrefix"].Value.ToString() + " " + Dts.Variables["InternalStr_FieldingDate"].Value.ToString()
, EmailMsgBody);
//Add Attachment
String filename = Dts.Variables["fileDailyReport"].Value.ToString();
System.Net.Mail.Attachment attachment;
attachment = new System.Net.Mail.Attachment(filename);
EmailCountMsg.Attachments.Add(attachment);
//EmailCountMsg.From.
EmailCountMsg.CC.Add(Dts.Variables["Config_SMTP_Success_CC"].Value.ToString().Replace(";", ","));
EmailCountMsg.IsBodyHtml = true;
SmtpClient SMTPForCount = new SmtpClient(Dts.Variables["Config_SMTP_ServerAddress"].Value.ToString());
SMTPForCount.Credentials = CredentialCache.DefaultNetworkCredentials;
SMTPForCount.Send(EmailCountMsg);
Dts.TaskResult = (int)ScriptResults.Success;
}
請發佈失敗腳本任務的代碼。 –
所以我找到了解決辦法,但我仍然對問題是什麼感到困惑。如果我將填充「InternalStr_FieldingDate」變量的SQL任務移動到任務鏈上,程序包會成功執行,而不會制動腳本任務,但是如果我將它放在原始位置(第三個起始位置 - SQL Task,XML Task,Script任務),它會中斷腳本任務。有人知道這個原因嗎?非常感謝你提前。 – user2414367