2013-07-15 31 views

回答

2

在SQL Server Integration Services 2012之前,在包之間共享值的唯一方法是使用父/子配置。實際上,你可以在不使用配置的情況下在它們之間共享一個值,但當所有的配置都出來時,它會很複雜

如果您有沒有必要進行雙向通信的,那麼你可以有包A(一個在腳本任務計算值)開始包B和使用/ SET屬性的值賦給變量

dtexec /file PackageB.dtsx /Set \Package.Variables[User::SharedVariable].Properties[Value];\"I was computed\" 

在SQL Server 2012項目部署模型中,配置概念已被替換爲參數。當你定義參數並指定它們是否需要時,這會更直接一點。 Execute Package Task提供了一個很好的局部變量和期望參數之間的映射機制。

1

在SSIS 2005和2008中: 在包級別聲明變量 - 說p爲int - 從父包中調用您的子包。 現在,如果您在Child包中具有腳本任務,則可以像這樣訪問變量p: 1.在子包的腳本任務編輯器中傳遞ReadOnly變量p 2.要訪問父變量:Dts.Variables [ 「p」]值; 請注意,我沒有在上述兩個步驟中使用「User :: p」。我發現這種方法很簡單。 確保您不要在子包級別聲明變量p。

那麼,這個方法是如何工作的?考慮變量範圍的基本概念。腳本任務將繼續「向上」以查找變量p。向上意味着 - 它將首先嚐試在任務級別,然後是容器級別,然後是包級別,然後在父級包級別找到它。 (這是一個簡單的解釋 - 從技術上說,每個級別都是容器。)

在SSIS 2012中,您還可以使用參數以ReadOnly模式傳遞變量。上述方法也可以在SSIS 2012中使用,並且可以覆蓋父變量的值。

相關問題