2011-04-14 83 views
0

VS 2008/SQL 2008將值傳遞給SSIS連接字符串從c#

我正在導入.csv文件到SQL表。

我想從C#代碼動態傳遞源文件和目標連接字符串。

由於某些原因,此代碼運行良好,但包未執行!我應該如何將連接字符串從C#代碼動態傳遞給SSIS包?

string strSourceConn = Server.MapPath(filePlacedOrder.Value); 
string strDestConn = System.Configuration.ConfigurationManager.AppSettings["SDB"]; 
string pkgLocation = Server.MapPath("Package.dtsx"); 

Package pkg; 
Microsoft.SqlServer.Dts.Runtime.Application app; 
DTSExecResult pkgResults; 

app = new Microsoft.SqlServer.Dts.Runtime.Application(); 
pkg = app.LoadPackage(pkgLocation, null); 

pkg.Variables["sConn"].Value = strSourceConn; 
pkg.Variables["dConn"].Value = strDestConn; 

pkgResults = pkg.Execute(); 
+0

上面的代碼看起來很合理。 「包沒有執行。」那是什麼意思?包錯誤了嗎?該包不啓動,但返回一個成功的代碼呢?包執行沒有錯誤,但不會產生任何工作?您的軟件包是否在IDE中正確執行,但在使用動態字符串時不能正確執行? – Sisyphus 2011-04-28 21:41:14

回答

1

動態更改連接字符串的最佳方法是從包中檢索所需的連接,然後更改其連接字符串。這與使用連接信息設置變量不同。在這種情況下,你可能需要使用:

pkg.Connections["sConn"].ConnectionString = strSourceConn; 
pkg.Connection["dConn"].ConnectionString = strDestConn; 

sConndConn在你的包中的連接的名稱。