与 2005 年相比,我在命令行上指定 /ConfigFile something.dtsConfig 时,2008 年包配置发生了变化,包中定义的变量保持其设计时值,而不是使用配置文件中的设置。
我不太确定我是否完全了解如何获取要使用的外部配置文件。我读过文章说只有设置的设计时配置才会覆盖外部文件的负载。这是否意味着我可以将变量更改为空白字符串,然后它们将被覆盖?我无法完全删除变量!整数呢?
我看过文章提到使用包中的包配置关闭。
我可以使用 SSIS 包编辑器或 XML 编辑器来更改包中的配置文件路径,然后它将使用该文件的“最后”设置(无论外部 /ConfigFile 选项如何),但我不想成为改变包装。我想要一个带有 Test.dtsConfig 和 Production.dtsConfig 的包,并且能够在不更改包的情况下来回交换。
现在推荐的方法是什么?
您必须考虑到,当通过 BIDS 运行时,包将首先从配置文件中获取变量值,并且只有当配置文件不存在时,才会抛出警告并从包中获取值。
现在,命令行中的情况有点不同。你可能有以下几种情况:
在 cmd 行中运行包,而不选择任何配置文件:
在 cmd 行中运行包,而不选择任何配置文件,但在调用中设置了变量:
使用新的配置文件在 cmd 行中运行包(假设是 DEV 而不是 Prod):
在 cmd 行中使用新的配置文件和调用中的 SET 语句运行包:
因此,简而言之,如果您想使用新的配置文件,您必须重命名/移动旧的配置文件并使用 /configFile 调用包。如果这还不够,并且想要覆盖新的配置文件,那么使用 /SET 变量。或者您可以绕过任何配置文件,只在批处理调用中使用 /SET 语句。
希望这将阐明您的可能性。