2012-11-26 91 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並保存。