SSIS配置文件是否支持DRY(不要重复自己)主体?

时间:2011-06-28 17:49:05

标签: visual-studio-2008 visual-studio-2005

我们有一大堆SSIS包来处理指定根“Data”文件夹位置的文件并将其加载到指定的目标数据库。

当然,根输入文件夹在开发和生产环境中也会像目标数据库一样发生变化。

对于特定的输入文件,我们可能有一个子文件夹不在根数据文件夹中,但是开发中的文件目录结构与生产相匹配;只有根文件夹位置不同。

我可以轻松地使用单个DtsConfig文件来控制数据库连接,方法是根据Development或生产环境中的文件更改此文件的内容。

关键部分: 但是,文件的ConnectionStrings并不是那么简单。理想情况下,我希望能够以%RootFolder%\ SourceSystemA \ HardCodeFileName.txt的形式指定文件Connectionstring路径,其中%Rootfolder%根据环境而变化。

但是,如果没有编写脚本来在运行时修改包(我没有看到任何示例)或以编程方式创建整个包,我不认为这可以做到。以这种方式使用环境变量仅应用于包属性的一部分似乎不受支持。 (试试吧!)似乎也不支持相对路径(尽管我们的文件位于不同的驱动器上,因此这可能没有帮助。)

不确定我所理解的“DRY”主体是否与此相关,但基本上,我想将那些静态的东西与那些变化的东西分开,并允许在一个地方轻松更新并让它适用于所有地方。

如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

这不完美,但我确实有这样做的方法。首先,向包中添加一个变量以保存根文件夹名称。接下来,单击您的连接并转到属性(F4)。单击“...”按钮修改“表达式”。为连接字符串创建表达式。对于表达式,您可以将根文件夹与特定文件名组合在一起(例如,@[User::RootFolder] + "\SpecificPath\Filename.csv")。

完成此设置后,您可以使用配置文件更改RootFolder包变量,然后使用它来正确读取/写入所有文件。

在回答标题问题时 - SSIS在某些地方支持DRY,而在其他地方则不支持DRY。对于您要做的事情,答案是肯定的(通过上面列出的表达式)。