如何使SSIS(dtexec)使用备用配置文件?

时间:2012-09-17 08:26:56

标签: configuration ssis

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

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

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

4 个答案:

答案 0 :(得分:10)

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

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

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

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

答案 1 :(得分:6)

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

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

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

答案 2 :(得分:3)

找到了办法!

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

dtexec仍将尊重/ conf交换机上提供的配置文件,但即使可以访问,它也将不再尝试使用设计时配置文件。

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

答案 3 :(得分: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
相关问题