在不同的时间使用不同参数执行相同的SSIS数据包

11

我有一个在晚上8点运行的SSIS包,针对的是2011年。

我希望在晚上8:30分时运行相同的包,但是针对的是2010年。

我创建了一个SSIS包配置文件,并将“年份”作为参数进行了接受。每当我运行时,我需要打开一个文件,更改值并运行它。

是否可能设置计划并动态设置年份值?

或者使用两个不同的配置文件是唯一解决的办法吗?

谢谢大家。

1个回答

20
使用配置文件的挑战在于您需要不断修改文件。SSIS启动后不会重新加载配置文件,因此您可能会有8:05和8:35 PM的工作,可以交换配置文件,但这将变得混乱,并且在某些时候会出现问题。我建议使用命令行变量(/set option in 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,它看起来像这样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>

该文件已经具有您正在尝试配置的"thing"的路径,因此请将其输入调用程序中,然后关闭包配置的年份部分。

最后,提供一个SSIS Configuration Precedence的链接,因为2005模型和2008模型存在差异。我看到您在工单中指示了2008,但对于将来的读者,如果您同时使用/SET和配置源(xml、sql server、registry、环境变量),操作顺序会因版本而异。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接