使用DTEXEC / SET覆盖SSIS 2008中的包配置变量

时间:2011-09-21 17:14:18

标签: sql-server-2008 etl ssis ssis-2005

我在将2005软件包转换到2008时遇到问题 - 在2008年,配置为使用配置过滤器的软件包变量(例如,从[SSIS配置中填充])似乎不会遵循dtexec提供的/ SET命令。 exe在运行时覆盖包变量值。

此问题记录在此处http://dougbert.com/blogs/dougbert/archive/2009/04/07/understand-how-ssis-package-configurations-are-applied.aspx

对此最直接的解决方案是什么?我想要旧的SSIS 2005行为,其中一个包变量最初是从[SSIS配置]加载的,但我可以在运行时覆盖它,如果我显式调用/ SET

我有一个解决方法,但我希望有一个更好的解决方案 - 我基本上有两个版本的变量我想要...例如NETWORK_PATH,NETWORK_PATH_CONFIG ...我在NETWORK_PATH上放了一个表达式来使用NETWORK_PATH_CONFIG(这个变量)将在[SSIS配置]中填充,如果NETWORK_PATH的值在运行时最初为NULL,则首先计算表达式,否则使用提供的值(可能是由dtexec / SET)

1 个答案:

答案 0 :(得分:0)

您可以使用/ Conn更改配置设置的位置并在那里设置不同的设置,或者从配置中完全删除变量,以便可以在dtexec / set参数中设置它。

如果您想要默认并覆盖,则必须使用/ conn参数并更改设置的位置。

e.g。

“C:\ Program Files(x86)\ Microsoft SQL Server \ 100 \ DTS \ Binn \ DTExec.exe”
    /文件“C:\ Path \ To \ My \ Package \ Import Types.dtsx”     / Conn Connection1;“Provider = SQLNCLI10; Server = MYSERVER; Database = DB_ONE; Uid = USERNAME; Pwd = PASSWORD;”     / Conn Connection2;“Provider = SQLNCLI10; Server = MYSERVER; Database = DB_TWO; Uid = USERNAME; Pwd = PASSWORD;”

似乎有人认为这比2005年的方法更好。在我打他之前,我想知道他的理由。

相关问题