簡體   English   中英

SSIS使用For循環容器不執行腳本任務和數據流任務

[英]SSIS Using For Loop Container Not Executing Script Task and Data Flow Tasks

我正在與專家聯系,因為我已經在最近的項目中遇到了障礙。 我創建了一個SSIS包(2008R2),它使用腳本任務來構建SQL語句,其中在SQL語句中使用變量( @month1 ),以指定在成員資格表中的月份回溯。 我還想使用@month1變量作為循環容器的“計數器”來指定執行查詢的次數。 SQL查詢附加到數據流任務,以將這些記錄附加到SQL Server數據庫的表中。 腳本任務和數據流任務在for循環容器之外工作,並為@month1變量提供初始值,但我無法弄清楚如何使for循環容器更新@month1 “counter”變量以便為每個循環可以將它用作“計數器”,SQL語句可以將其用作創建的SQL語句中的條件。 任何人都有關於如何做到這一點的想法或例子?

**更新** For循環容器是問題所在。 腳本任務和數據流任務在For循環容器之外工作。 它將使用@ month1的初始變量設置並創建動態sql腳本,執行腳本並將數據從源數據庫服務器傳輸到目標源服務器。 問題是當我將這些步驟放在For循環容器中時,容器執行並變為綠色但不調用其中的步驟。 這就是為什么我認為容器沒有讀取變量@ month1,即使該變量是在包級別設置的。 有什么想法嗎?

首先,嘗試將數據流Delay Validation屬性設置為True 如果它仍然不起作用,而不是將變量作為參數傳遞給OLEDB源使用表達式:

  1. 創建一個string類型的變量。
  2. 將其EvaluateAsExpression屬性更改為True
  3. 設置表達式類似於:

     "select * from table Where column =" + (dt_str, 50)@[User::month1] 
  4. 在OLEDB Source中, SQL Command from variable選擇Access模式作為SQL Command from variable並選擇此變量。

請注意,month1變量不是兩次創建不同的范圍 ,單擊數據流任務並檢查變量面板是否顯示其他變量。

我感謝大家的回應,但似乎我在這個問題上欺騙了自己。 在尋找最復雜的問題時,我忽略了最簡單明了的問題。 我的For循環沒有執行容器內部步驟的原因是因為我將@month1的初始值設置為3 (故意)並且想要循環直到它被解析為-49 EvalExpression設置中,它將進行評估,直到語句為FALSE ...因此我在@month1 <= -49的評估已經為假。 它需要是@month1 > -49所以一旦它下降到-49,聲明就會是假的。 我對自己這樣做比我應該承認的更多,看不到森林里的樹木!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM