我已将SSIS配置配置为从XML文件加载。当我使用dtexec运行包时,我为我正在处理的每个国家/地区指定了不同的配置文件。在Visual Studio中,我将其指定为France.dtsConfig(我必须选择一个,这是第一个)。
当我使用dtexec /FILE Import.dtsx /Reporting V /ConfigFile "C:\Italy.dtsConfig"
运行包时,我仍然看到输出告诉我“包正在尝试从XML文件France.dtsConfig进行配置”。
我以为我可以通过为每个国家/地区提供不同的dtsConfig文件来覆盖配置。这可能吗?我做错了什么?
答案 0 :(得分:10)
我正在使用SQL Server 2008 R2,但是我遇到了相同的问题,显然忽略了配置覆盖。我发现我需要的技巧是从包中删除XML配置设置(包配置),然后在运行包时应用您指定的XML配置文件。但是,没有关于使用该文件的消息(并且由于您从包中删除了XML配置定义,因此也不会发出该消息)。
MSDN有一个explanation(转到“了解运行时如何应用SSIS包配置”一节),起初对我没有意义,但是在发现没有定义XML配置文件之后给出了期望的结果,我可以看到它想说的是什么。
在我的情况下,我使用XML文件来设置找到[SSIS配置]表的服务器的实例名称。在设计时,这是连接管理器对象中的DEVServer,我想将值覆盖到TESTSvr。遵守规则:
答案 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
检查您是否指向正确的包
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