2013-02-17 41 views
1

我遇到了一個非常奇怪的情況,我一直在使用SSIS包。在數據流中發送0行時應該調用腳本組件嗎?

我有一個foreach循環,其中包含一個數據流任務,它執行循環之前填充的記錄集對象中的每個記錄。

在數據流任務中,我有一個ADO.NET源代碼,一個查找,最後是一個目標腳本組件。腳本組件在PreExecute中初始化數據表,將輸入中的每一行都添加,post將數據表作爲表值參數發送到存儲過程。查找任務設置爲僅將不匹配的行發送到腳本組件。

奇怪的情況是,我發現當查找中的所有行都匹配時,腳本組件仍在執行時發送給它的0行。這導致了存儲過程中的錯誤,因爲我只是希望在腳本組件收到多於0行時調用它。我已經糾正了存儲過程本身的問題,首先做一個檢查,確實有數據傳入。

在其他包中,我有非常類似的情況與目標腳本組件設置後查找其中0記錄傳入,並沒有看到這種行爲發生在那裏 - 唯一的區別是它們不在foreach循環內。

所以,我真的想知道,爲了將來的參考,如果它是一個SSIS腳本組件的預期行爲,它將在傳入0行時執行?

+0

@Siva是的,它是一個目標腳本組件。 – 2013-02-17 19:25:48

回答

1

PreExecutePostExecute方法將執行即使有沒有行從以下Lookup Transformation輸出重定向到Script Component配置爲Destination數據分量流任務

  • 查找匹配輸出
  • 查找無匹配輸出

確保您認爲該包是一個比不工作時以相同的方式配置的工作不同。

+0

有趣的 - 在進一步思考未發生問題的package/proc後,會出現類似的循環,但它存儲在proc本身中。所以,如果傳入一個空白表值參數,它將不會執行循環內的任何邏輯。感謝您的快速回答,Siva! – 2013-02-17 19:40:21

相關問題