Cad*_*oux 10 sql-server-2008 sql-server ssis
当我在命令行上指定 /ConfigFile something.dtsConfig 时,2008 年包配置与 2005 年相比发生了变化,包中定义的变量将保留其设计时值,而不是使用配置文件中的设置。
我不太确定我完全理解如何获取要使用的外部配置文件。我读过一些文章,说只有设置的设计时配置才会覆盖外部文件的负载。这是否意味着我可以将变量更改为空字符串,然后它们会被覆盖?我不能完全删除变量!整数呢?
我看过一些文章提到使用包中的包配置关闭。
我可以使用 SSIS 包编辑器或 XML 编辑器来更改包中的配置文件路径,然后它将“最后”使用该文件的设置(无论外部 /ConfigFile 选项如何),但我不想成为改变包。我想要一个带有 Test.dtsConfig 和 Production.dtsConfig 的包,并且能够在不更改包的情况下来回交换。
现在推荐的方法是什么?
Mar*_*ian 10
您必须考虑到,当通过 BIDS 运行时,包将首先从配置文件中获取变量值,并且仅当配置文件不存在时,才会抛出警告并从包中获取该值。
现在,命令行中的情况有点不同。您可能会遇到以下情况:
在没有选择任何配置文件的情况下在 cmd 行中运行包:
dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx"
Run Code Online (Sandbox Code Playgroud)
在没有选择任何配置文件的 cmd 行中运行包,但在调用中设置了变量:
dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /SET \Package.Variables[checkMe];"outside the package in cmd line"
Run Code Online (Sandbox Code Playgroud)
使用新的配置文件在 cmd 行中运行包(假设 DEV 而不是 Prod):
dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig"
Run Code Online (Sandbox Code Playgroud)
使用新的配置文件和调用中的 SET 语句在 cmd 行中运行包:
dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig" /SET \Package.Variables[checkMe];"outside the package in cmd line - DEV config"
Run Code Online (Sandbox Code Playgroud)
因此,简而言之,如果您想使用新的配置文件,您必须重命名/移动旧的配置文件并使用 /configFile 调用该包。如果这还不够并且想要覆盖甚至新的配置文件,那么使用 /SET 变量。或者,您可以绕过任何配置文件,只在批处理调用中使用 /SET 语句。
希望这会揭示你的可能性。
| 归档时间: |
|
| 查看次数: |
9201 次 |
| 最近记录: |