Предизвикателството при използването на подход с конфигурационен файл е, че ще трябва постоянно да променяте файла. SSIS няма да презареди конфигурационния файл, след като стартира, така че е възможно да имате задачи от 20:05 и 20:35, които разменят конфигурационните файлове, но това ще стане объркващо и ще се счупи в даден момент.
Бих се справил с тази ситуация с променливи на командния ред (/set опция в dtexec ). Ако стартирахте пакета от командния ред, той би изглеждал нещо като dtexec.exe /file MyPackage.dtsx
Дори ако използвате SQL Agent, зад кулисите той изгражда тези аргументи на командния ред.
Този подход предполага, че създавате две различни задачи (срещу 1 работа, планирана 2 пъти на ден). 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 или селектор за свойството, което искате да конфигурирате. Въпреки това, тъй като вече сте създали .dtsConfig файл за вашия пакет, отворете този файл и потърсете раздел като
<Configuration ConfiguredType="Property" Path="\Package.Variables[User::Year].Properties[Value]" ValueType="Int32">
<ConfiguredValue>2009</ConfiguredValue>
Файлът вече съдържа пътя до „нещото“, което се опитвате да конфигурирате, така че го вкарайте във вашата извикваща програма и след това изключете частта за годината от конфигурацията на пакета.
И накрая, връзка към SSIS Configuration Precedence тъй като има разлики в модела от 2005 г. срещу 2008 г. Виждам, че сте посочили 2008 в билета си, но за бъдещи читатели, ако използвате както /SET, така и източник на конфигурация (xml, sql сървър, регистър, променлива на средата), редът на операциите варира между версиите.