【问题标题】:How do I make SSIS (dtexec) use an alternate config file?如何让 SSIS (dtexec) 使用备用配置文件?
【发布时间】:2012-09-17 08:26:55
【问题描述】:

我已将我的 SSIS 配置配置为从 XML 文件加载。当我使用 dtexec 运行包时,我为我正在处理的每个国家/地区指定不同的配置文件。在 Visual Studio 中,我将其指定为 France.dtsConfig(我必须选择一个,这是第一个)。

当我使用dtexec /FILE Import.dtsx /Reporting V /ConfigFile "C:\Italy.dtsConfig" 运行包时,我仍然看到输出告诉我“包正在尝试从 XML 文件 France.dtsConfig 进行配置”。

我认为我可以通过为每个国家/地区提供不同的 dtsConfig 文件来覆盖配置。这可能吗?我做错了什么?

【问题讨论】:

  • 注意:我发现如果我删除包中指定为配置文件的文件,那么它会从我在 dtexec 命令中指定的配置文件中获取值.但是,如果在设计时指定的配置文件可用,则无论我的命令行选项指定备用配置文件如何,都将使用它。我想知道是否有人可以验证这一点?

标签: configuration ssis


【解决方案1】:

我正在使用 SQL Server 2008 R2,并且我遇到了同样的问题,配置覆盖显然被忽略了。我发现我需要的技巧是从包(包配置)中删除 XML 配置设置,然后在运行包时应用您指定的 XML 配置文件。但是,没有发出关于使用该文件的消息(并且由于您从包中删除了 XML 配置定义,因此也不会发出该消息)。

MSDN 有一个 explanation(转到“了解如何在运行时应用 SSIS 包配置”部分),起初对我来说没有意义,但在发现没有定义 XML 配置文件后给出了想要的结果,我可以看到它想说什么。

在我的例子中,我使用 XML 文件来设置找到 [SSIS 配置] 表的服务器的实例名称。在设计时,这是连接管理器对象中的 DEVServer,我想覆盖 TESTSvr 的值。遵守规则:

  1. “实用程序应用在设计时在包中指定的配置,并按照包中指定的顺序。”所以值 DEVServer 是从包中加载的。
  2. “该实用程序随后会应用您在命令行中指定的任何选项。”我的 XML 文件 (TESTSvr) 中的值现在已加载。我可以在这里提供我喜欢的任何文件名,它会被加载(无论是法国还是意大利)。
  3. “然后,该实用程序会在设计时按照包中指定的顺序重新加载包中指定的配置。...该实用程序使用指定的任何命令行选项来重新加载配置。”注意规则的第二部分,关于使用命令行值。由于我们目前已将服务器设置为 TESTSvr,因此该值现在用于从 [SSIS 配置] 表中加载您想要的其他配置值。

【讨论】:

  • 我必须说,看到这个设计决定非常令人失望。第一次发现它也令人沮丧。至少有一个非常明确的方法。
【解决方案2】:

我没有提及记录此行为的文章,但我已确认。如果包配置中指定为配置文件的文件在运行时可用,它将优先使用命令行中指定的文件。

根据我的经验和观点,这与在命令中指定某些内容应覆盖内置默认值的正常行为相反。

要使用dtexec命令中指定的配置文件,重命名或删除XML配置文件配置字符串中指定的文件包配置管理器.

【讨论】:

    【解决方案3】:

    找到方法了!

    在设计器中,只需取消选中 SSIS -> 包配置下的“启用包配置”选项,然后保存。

    dtexec 仍将遵循 /conf 开关上提供的配置文件,但即使可访问,它也不再尝试使用设计时配置文件。

    我仍然同意这是一种奇怪的行为,无论如何 /conf 都应该覆盖设计时设置。

    【讨论】:

      【解决方案4】:

      这应该可以工作

       /CONFIGFILE "C:\Italy.dtsConfig"   /REPORTING V
      

      double quotes中指定完整的配置文件位置

      编辑:

      在 MSDB 中部署包后,执行包的命令是

        DTEXEC  /SQL "\Package.dtsx" /SERVER "Server Name"
                /CONFIGFILE "C:\Italy.dtsConfig"  /REPORTING V
      

      如果你已经部署在文件系统中,那么

       DTEXEC  /f "Physical Package Location"
       /CONFIGFILE "C:\Italy.dtsConfig" /REPORTING V
      

      检查你是否指向正确的包

      MSDN

        You can use the /ConfigFile option to load additional configurations 
        at run time that you did not specify at design time. However, you cannot
        use the /ConfigFile option to replace configured values that you also
        specified at design time
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多