如何从scripttask Task(VB)使用现有的OLEDB连接管理器。我需要从“脚本任务”任务执行SQL语句。
尝试使用以下代码,但无法与OLEDB Connectionmanager建立连接
Dim MyCM As ConnectionManager = Dts.Connections("MyConnection1")
Dim CS As String = Dts.Connections(MyCM).ConnectionString
sqlConn = New SqlConnection(CS)
答案 0 :(得分:1)
我会向您推荐Todd McDermid撰写的这篇最优秀的博文,Using Connections Properly in an SSIS Script Task
答案 1 :(得分:1)
首先,您必须将连接管理器添加到脚本框中:
然后,您可以通过Connections
对象在代码中访问它,例如:
this.Connections.EBIC;
检查用户bilinkc的答案中的链接以获取更多详细信息
答案 2 :(得分:-1)
我不记得我发现这个的链接了。但它开始了! (只有你必须改为C#或者找到放入VB的方法,这很容易)
SSIS在将Object_COM转换为IDTSConnectionManager
方面存在问题,我浪费了很多时间,所以OleDbConnection
修复了它。
使用Connection Manager和连接名OLEDB_NameConnectionTo_SQLServer
,
如果你在查询中使用storesProcedures
或函数字符“?”重要的是把参数放到后面,我真的不知道为什么这样下去了
你必须添加这个refences。
使用Microsoft.SqlServer.Dts.Runtime.Wrapper;
使用System.Data.OleDb;
...
try{
ConnectionManager cm = Dts.Connections["OLEDB_NameConnectionTo_SQLServer"];
IDTSConnectionManagerDatabaseParameters100 cmParams = cm.InnerObject as IDTSConnectionManagerDatabaseParameters100;
OleDbConnection conn = cmParams.GetConnectionForSchema() as OleDbConnection;
OleDbCommand cmd = new OleDbCommand("EXEC SP ?, ?, ?;", conn);
OleDbParameter Param = cmd.Parameters.Add("@PIParam", OleDbType.Integer);
ParametroId.Value = 3;
OleDbParameter Cons = cmd.Parameters.Add("@PICons", OleDbType.Integer);
Cons.Value = 2;
OleDbParameter Cte = cmd.Parameters.Add("@PICte", OleDbType.Integer);
Cte.Value = 1;
using ( OleDbDataReader reader = cmd.ExecuteReader() ){
if ( reader.HasRows && reader.Read() )
valor = (reader["VALUE"].ToString());
}
cm.ReleaseConnection(conn);
} catch( Exception ex ){
MessageBox.Show(ex.Message.ToString());
}