我使用Foreach循環內的Dataflow迭代了好幾年,但有些年份不會返回任何數據,因此它們的SSIS包失敗了,有沒有辦法處理這個問題?告訴軟件包忽略這些空白並繼續執行?如何處理DataFlow任務中的空查詢結果?
感謝,
我使用Foreach循環內的Dataflow迭代了好幾年,但有些年份不會返回任何數據,因此它們的SSIS包失敗了,有沒有辦法處理這個問題?告訴軟件包忽略這些空白並繼續執行?如何處理DataFlow任務中的空查詢結果?
感謝,
一種方法,你可以,如果你不想碰數據如何被傳遞到Foreach
組件:
您可以包括Foreach
容器首先檢查裏面是否額外Execute SQL Task
組件有任何數據需要處理。
創建一個變量到您的SQL任務將設置記錄計數,例如@cntProceed
設置此組件的數據流任務之前運行。
修改優先約束(從SQL任務到您的數據流任務的綠色箭頭)。設置evaluation operation
到Expression and Constraint
,Value
到Success
,並Expression
到@cntProceed != 0
這一切都沒有:在foreach組件/容器內它會首先檢查是否存在任何數據的工作。這就是附加組件將要執行的操作,如果有數據要使用,它將繼續到數據流組件。否則,該"each"
(或更確切地說,那一個循環)將結束,Foreach
將移動到下一個。
我不知道爲什麼,如果查詢返回0行的數據流會失敗。一種可能的解決方案是在有效年限內詢問您的數據,並僅通過有效年份進行迭代。這可以通過以下方式進行:
你能查看包上的代碼併發布嗎?我很樂意看到我是否能夠複製您遇到的問題,併爲您提供更直接滿足您發佈需求的解決方案。
你傳遞給foreach循環的是什麼,你在foreach循環中有什麼?請添加更多細節到您的文章..它會幫助加載.. – Nonym 2012-01-04 19:54:09
我是一個傳遞和對象變量的foreach循環,在foreach循環內我有一個數據流任務(ole db源和目的地)使用該變量在查詢中,他們變量(使用foreach的變量)工作正常,但例如如果查詢使用沒有數據的年份(變量),則任務失敗。我想處理不返回數據的情況 – user1112251 2012-01-04 20:02:18
僅供參考如果查詢類似於「Select * from sysobjects where =?」而且那一年沒有數據失敗 – user1112251 2012-01-04 20:04:55