4

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

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

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

4

4 回答 4

10

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

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

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

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

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

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

要使用 dtexec 命令中指定的配置文件,请重命名或删除Package Configurations Organizer中XML 配置文件配置字符串中指定的文件。

于 2012-09-18T09:13:29.523 回答
3

找到方法了!

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

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

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

于 2014-06-16T06:55:04.040 回答
2

这应该工作

 /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
于 2012-09-17T08:48:01.120 回答