2013-10-24 12 views
5

您的幫助和洞察力是極大的讚賞SSIS如何ForceExecutionResult成功的祖父母集裝箱

在SSIS我需要ForceExecutionResult =成功的祖父母集裝箱

這是我有我的包裹設置了目前:
父包= A
子包= B

- 執行包任務從
呼叫B - 如果乙方未能與特定電子我重試B

我使用腳本任務通過A的執行包任務中的OnError事件處理程序重試B.

爲了我的思維方式:
- A的執行包任務OnError事件處理程序腳本任務父容器
- A的執行包任務是腳本任務的祖父母集裝箱

如何ForceExecutionResult =成功的B重試成功時,祖父母容器(A的執行包任務)?

現在,即使B重試成功,A的執行包任務仍然顯示紅色=失敗,因爲第一次B嘗試發生失敗。

尋找在腳本任務中使用C#或VB進行編程的方式。

我使用SSIS 2008閱讀

+0

我想你會需要一個外部表來設置一些標誌和東西。我的意思是,它的可行性,但它只是有點麻煩。由於在重試失敗後重新啓動B,程序包需要保存第一次運行的狀態和錯誤代碼,以便在第二次(或第三次或第N次運行)期間參考相同的值。希望這可以幫助。 – rvphx

回答

1

主要提醒

由於不是OnError事件後重新運行程序包B。您需要致電B,確保它不會使包裝A失效,評估包裝B的結果並決定要做什麼。

  1. 創建一個For Loop容器,並使其運行的次一組號碼(=運行的最大數量,就像在while i < 5 do)。

  2. 設置Execute Package任務不會失敗父母和整個包的錯誤。

  3. 在成功/失敗條件下評估Script Task中的執行代碼並退出For Loop容器。 (如通過設置i = 5)。

也許你可以從C#Script Task執行程序包B - 檢查對象模型是如何做到這一點。如果我找到答案,我會更新我的答案。

+0

感謝您的解決方案。我相信這是可行的。在我的特殊情況下(100+兒童套餐電話),我可能不會選擇實施,因爲我很懶。因爲我沒有辦法在腳本任務中使用C#或VB來完成此操作,所以我接受了您的答案。我沒有看到實際上可以做到我想要的SSIS 2008對象模型。它似乎不可能從子包中更改父包的屬性。更可惜。 –