[英]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源使用表達式:
EvaluateAsExpression
屬性更改為True
設置表達式類似於:
"select * from table Where column =" + (dt_str, 50)@[User::month1]
在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.