2012-11-26 51 views
1

我有一个SSIS包,可以从不同的SQL Server代理作业并行执行多次。我使用命令行参数/ CONNECTION将ConnectionString设置为连接管理器。在运行时覆盖SSIS连接管理器连接字符串

看来,SSIS重写我的运行时ConnectionString与设计时的价值。我还发现了一篇MSDN文章,指出这确实会发生什么。
http://msdn.microsoft.com/en-us/library/bb500430(v=sql.105).aspx

有没有办法在运行时覆盖连接管理器ConnectionString?我需要这个功能,因为我为不同的设置使用相同的包,所以我不能“硬编码”ConnectionString。

+0

您是否还在使用配置(xml,table,environment variable,registry)来设置相同的连接字符串? – billinkc

+0

不,我从SQL Server使用PackageConfigurations,但根本没有触及Connection Manager。 –

回答

3

如果仅限于使用命令行只,然后用/SET在运行时使用表达式改变的变量值,从变量构建连接字符串(如你上面贴的链接说/ SET覆盖设计时间值,而/连接不会。)

dtexec /f mypackage.dtsx /set \package.variables[myvariable].Value;myvalue 

另一种方式运行期间重写或提供ConnectionSting是如所描述的here开始usinng 包配置

+0

我不确定这是否可行。如果您查看我提供的链接,则说明它不起作用,因为在应用运行时间值之后,值会被设计时值覆盖。我已经在使用来自SQL Server的程序包配置,但为了能够加载配置,我需要连接到SQL Server,并且计划提供运行时参数。 –

+0

如果您要更改**位置**,但对**属性**(所引用表格中的第3行)具有所需效果,则它不起作用 – user1826905

+0

您指的是2005(第一列)。我有2012年,所以行为与2008年(第二列)相同,因此它没有任何影响。 –

0

使用记事本编辑[mypackage].dtsx,手动更改ConnectionString并保存。