2012-10-08 77 views
2

我有一個相當直接的SSIS包,其中我無法將包範圍變量的值從控制流傳遞到數據流任務。請看下圖:將控制流中的變量值傳遞給SSIS中的數據流

Control Flow

執行SQL任務從「機器」的名單得到的值。這用於控制ForEach循環容器,這非常有效。接下來,腳本任務執行一些數學運算並將一個數字分配給程序包作用域變量(整數類型)。我添加了在循環期間彈出的消息框,以便我可以驗證該變量的值是否正確設置。

最後一個圖標是我想要使用變量值的數據流。我有一個簡單的腳本任務,其中只包含一個消息框,顯示該變量的當前值。每次,變量都是我最初在設計器(BIDS)中設置的值。因此,該值不會被「傳遞」給數據流。我已多次驗證變量的名稱是否正確(包括區分大小寫的值)。

這應該很簡單,我對這個問題感到沮喪。我將不勝感激,並提出建議或意見。謝謝!

+0

驗證您尚未在數據流範圍內聲明相同的變量。你在做什麼是一個相當標準的操作 – billinkc

+0

感謝您的好建議。我設置了一個斷點,並且它看起來正在設置包變量。我沒有看到在數據流中聲明的相同變量。爲了確保,我創建了一個全新的變量,將其替換爲全部並刪​​除了我的原始變量。當我運行它時,我遇到了同樣的問題。我想我可能會嘗試創建一個小包,以便以更簡單的方式驗證這個概念。 – Loki70

+0

即使提問者在最後感覺像是一個白癡,這篇文章說明了有用的故障排除,並且問題得到了很好的解答。 – Smandoli

回答

2

你如何從腳本任務設置包變量?它應該像這樣(C#):

DTS.Variables["testVariable"].Value = "some value"; 

然後從腳本組件在數據流任務測試:

public override void PostExecute() 
{ 
    base.PostExecute(); 

    MessageBox.Show(Variables.testVariable, "test"); 
} 

我這樣做的測試包,它能正常工作。

編輯

還要確保你添加的變量爲腳本任務的屬性的ReadWriteVariables部分。

+1

多煩人。在我測試了這個概念在一個小型新項目中的工作之後,我重讀了我設置變量值的區域。我在聲明中使用了錯誤的變量名,這導致了我的錯誤。我覺得自己像個白癡。感謝大家幫我調試這個錯字,我很抱歉花費你的時間。 – Loki70

相關問題