2011-12-05 18 views
8

用不同的參數執行相同的SSIS包我有一個SSIS包日晚上8點運行,晚上爲2011年在不同的時間

我想在8:30 PM在運行相同的包2010年。

我做了一個SSIS包配置文件,並接受「年」作爲參數。每當我運行,我需要打開一個文件,更改值並運行它。

是否可以設置時間表並動態設置Year值?

或者使用2個不同的配置文件是解決它的唯一方法嗎?

謝謝大家。

回答

16

使用配置文件方法的挑戰是您需要不斷修改文件。 SSIS不會在啓動後重新加載配置文件,所以你可以想象有8:05和8:35 PM作業交換配置文件,但這會變得混亂,並在某些時候中斷。

我會處理這種情況與命令行變量(/set option in dtexec)。如果您是從命令行運行包,它看起來像dtexec.exe /file MyPackage.dtsx即使您正在使用SQL Agent,幕後它也會構建這些命令行參數。

這種方法假定您創建兩個不同的工作(相對於每天安排2次的1個工作)。 AgentMyPackage2011具有SSIS的作業步驟導致

  • dtexec /file MyPackage.dtsx /Set \Package.Variables[User::Year].Properties[Value];\"2011\"

和AgentMyPackage2012具有SSIS的作業步驟導致

  • dtexec /file MyPackage.dtsx /Set \Package.Variables[User::Year].Properties[Value];\"2012\"

通過GUI,它看起來像 SQL Agent Set values tab

SQL Agent Command line tab

沒有GUI或選擇您要配置的屬性。不過,既然你已經爲你的包.dtsConfig文件,打開該文件並尋找像

<Configuration ConfiguredType="Property" Path="\Package.Variables[User::Year].Properties[Value]" ValueType="Int32"> 
<ConfiguredValue>2009</ConfiguredValue> 

文件已經有路徑的「東西」一節中,您正在嘗試配置等等將其打入您的調用程序,然後關閉程序包配置的年份部分。

最後,SSIS Configuration Precedence一個環節,因爲在2005年的VS 2008模式的差異。我看到您在票證中顯示2008年,但對於未來的讀者,如果您使用/ SET和配置源(xml,sql server,registry,環境變量),操作順序會因版本而異。