【问题标题】:Do SSIS Config Files support the DRY (Don't repeat yourself) principal?SSIS 配置文件是否支持 DRY(不要重复自己)原则?
【发布时间】:2011-06-28 17:49:05
【问题描述】:

我们有大量的 SSIS 包,它们处理指定根“数据”文件夹位置中的文件并将其加载到指定的目标数据库。

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

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

我可以轻松地拥有一个 DtsConfig 文件来控制数据库连接,方法是根据文件是在开发环境中还是在生产环境中更改该文件的内容。

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

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

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

如何做到这一点?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常好的开始!但是为了避免在 100 个包中存储 100 次根文件夹的值,我希望能够从一个集中位置读取和维护它,最好是一个平面文件或数据库表中的一个值。你能帮助一个菜鸟完成这幅画吗?
    • 每个 SSIS 包中可以有多个配置文件;您可以制作一个只有根文件夹的配置文件,并且每个 SSIS 包都引用相同的配置文件。
    • 请注意,这确实意味着您的所有 SSIS 包都必须定义相同的包变量,但这应该不是问题。
    • 你摇滚。非常感谢您的帮助!
    猜你喜欢
    • 2018-11-04
    • 2017-06-14
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多