我在2011年晚上8点运行SSIS包。
我想在2010年的晚上8:30运行相同的套餐。
我制作了一个SSIS包配置文件,并接受“Year”作为参数。每当我运行时,我需要打开一个文件,更改值并运行它。
是否可以设置计划并动态设置年份值?
或者使用2个不同的配置文件是解决它的唯一方法吗?
谢谢大家。
答案 0 :(得分:19)
使用配置文件方法的挑战是您需要不断修改文件。 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,它看起来像
您要配置的属性没有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 server,registry,environment variable),那么操作顺序会因版本而异。