TTC*_*TCG 10 parameters sql-server-agent ssis sql-server-2008
我有一个SSIS包在晚上8点运行2011年.
我想在2010年的晚上8:30运行相同的套餐.
我制作了一个SSIS包配置文件并接受"Year"作为参数.每当我运行时,我需要打开一个文件,更改值并运行它.
是否可以设置计划并动态设置年份值?
或者使用2个不同的配置文件是解决它的唯一方法吗?
谢谢大家.
bil*_*nkc 19
使用配置文件方法的挑战是您需要不断修改文件.SSIS在启动后不会重新加载配置文件,所以你可以想象有8:05和8:35 PM的作业交换配置文件,但这会变得混乱并在某些时候中断.
我会用命令行变量(dtexec中的/ set选项)来处理这种情况.如果您从命令行运行该程序包,它看起来就像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>
Run Code Online (Sandbox Code Playgroud)
该文件已经具有您尝试配置的"事物"的路径,因此请将其打入您的调用程序,然后关闭软件包配置的年份部分.
最后,链接到SSIS配置优先级,因为2005和2008模型存在差异.我看到您在票证中指出了2008,但是对于未来的读者,如果您同时使用/ SET和配置源(xml,sql server,注册表,环境变量),则操作顺序因版本而异.