【问题标题】:Can One SSIS Package use two different XML Config files in the same execution?一个 SSIS 包可以在同一执行中使用两个不同的 XML 配置文件吗?
【发布时间】:2015-03-11 22:08:24
【问题描述】:

我继承了一些需要修改的 SSIS 包,以便从 SQL 2008 R2 迁移到 SQL 2012。不幸的是,“配置”做得很差。

我们有一个适用于所有 SSIS 包的全局 XML 配置文件,并且 XML 配置文件中只有几个变量——服务器名称、ODS 服务器名称和环境(开发、集成、PreProd 和生产)。

为了“配置”,他们在 SSIS 包中编写代码:If 'Development' Then ... Else If 'Integration' Then ...

要更改“配置”,必须更改包中的代码。

我曾尝试协商更改但没有成功,但没有人做出让步,因此保留了一个 XML 配置文件。

如果我可以添加第二个 XML 配置文件,其中包含需要在每个环境中配置的特定于包的变量,我就会这样做。但是,我还没有找到一种方法来做到这一点。有可能吗?

我的第二个选择是将变量放在 SQL Server 表中。

【问题讨论】:

  • 等等,什么? In order to change the "configuration", one has to change the code in the Package 他们是否手动解析配置文件并在脚本任务中分配值?否则,一旦包开始执行,所有配置都已经完成
  • 我很高兴赌上我所有的神奇 SO 独角兽积分和我的 SSIS 金牌,并明确表示:他们做错了。
  • 您可能已经发现 SQL 2012 有一个新功能“环境”(使用项目部署模型)。也许您会争辩说您没有充分利用新功能
  • PS 这需要发布到 thedailywtf.com
  • @Nick.McDermaid 2007 年我去拜访客户时,我看起来像个该死的天才。他们将 machine.config 用于他们的 IIS,所以不妨也将它用于 SSIS,对吧?因此,每个包大部分都有相同的代码来解析它并获取所需的连接字符串。 “你们都知道这是产品内置的,对吧?” 蟋蟀

标签: ssis sql-server-2008-r2 sql-server-2012 ssis-2012


【解决方案1】:

我认为最好的办法是用 OLE DB 命令替换所有脚本任务来调用存储过程,该过程将采用以下参数:Environment、ConnectionName、PackageName 和 ServerType(标准或 ODS)。此存储过程的输出将是 ServerName,它将分配给一个变量。然后可以使用此变量设置连接的服务器名称。存储过程可能依赖于表或全局 XML 文件。我会建议桌子。无论哪种方式,包中的逻辑都将是最小的,并允许您以任何您认为合适的方式实现。

【讨论】:

    猜你喜欢
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 2013-11-29
    • 2010-12-07
    相关资源
    最近更新 更多