我有一個簡單的包,它可以更新我的數據庫,然後將數據導出到五個不同的文件。我想要做的是生成一封電子郵件,詳細瞭解每個導出是否已成功運行。所以我想在電子郵件中這樣的事情:SSIS - 確定哪些任務失敗,發送單個郵件的詳細信息
|EXPORT | STATUS |
| 4 | Success |
| 5 | Success |
| 6 | Success |
| 7 | Failed |
| 8 | Success |
起初,我有獨立的成功和失敗(Logical OR
)電子郵件任務設置。這使我可以確定所有任務成功或至少一次失敗......但那不是我想要的。然後,我看着this example並在我的腳本任務中用C#重寫它,但我意識到示例中的變量似乎並不存在(腳本會引發錯誤),所以我嘗試創建用戶變量並在ReadWriteVariables
中傳遞它們,腳本將成功運行,但在發送郵件任務中不會顯示任何內容,腳本實際上並沒有做任何事情。
我已經看了幾個類似的問題和this one似乎要接近我想要的東西,這樣的解釋做什麼,但並不能真正幫助初學者像我這樣真正做到這一點。
下面是引用我的控制流:
和腳本任務中的Main
方法:
ArrayList messages = new ArrayList();
try
{
messages = (ArrayList) Dts.Variables["ErrorCollection"].Value;
}
catch (Exception Ex)
{
// Handle errors...
}
messages.Add(Dts.Variables["ErrorDescription"].Value.ToString());
Dts.Variables["ErrorCollection"].Value = messages;
Dts.Variables.Unlock();
Dts.TaskResult = (int)ScriptResults.Success;
我不知道我是否要去關於這個錯誤的方法,有可能是一個簡單的方法來做到這一點,但對SSIS來說是新的,我不知道它是什麼。任何幫助將不勝感激。謝謝!
做好發佈您的解決方案我相信人們會發現這有幫助。 。或者:所有任務失敗都寫入SSISDB(假設這是SSIS的正確版本)。您可以編寫一個查詢,從SSISDB獲取最新執行和任何錯誤,並將它們發送給他們,而不是手動編寫包中的整個線束。好處是您可以根據需要在包中添加儘可能多的附加步驟,而無需添加自定義代碼。 –