建立从脚本任务(VB)到SSIS包的OLEDB连接管理器的连接

时间:2012-02-01 13:39:28

标签: vb.net sql-server-2008 ssis

如何从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) 

3 个答案:

答案 0 :(得分:1)

我会向您推荐Todd McDermid撰写的这篇最优秀的博文,Using Connections Properly in an SSIS Script Task

答案 1 :(得分:1)

首先,您必须将连接管理器添加到脚本框中:

Adding a connection manager to a script component

然后,您可以通过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());
}