2011-04-14 33 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在你的包中的连接的名称。

相关问题