Установление соединения из Задачи сценария (VB) с OLEDB Connection Manager пакета служб SSIS - PullRequest
1 голос
/ 01 февраля 2012

Как использовать существующий диспетчер соединений OLEDB из TaskTask Task (VB). мне нужно выполнить оператор SQL из задачи «Задача сценария».

Редактировать

Попытка следующего кода, но не удалось установить соединение с моим OLEDB Connectionmanager

Dim MyCM As ConnectionManager = Dts.Connections("MyConnection1") 
Dim CS As String = Dts.Connections(MyCM).ConnectionString 
sqlConn = New SqlConnection(CS) 

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

Сначала вы должны добавить диспетчер соединений в поле скрипта:

Adding a connection manager to a script component

Затем вы получите доступ к нему в коде через объект Connections, например:

this.Connections.EBIC;

Проверьте ссылку в ответе пользователя bilinkc для более подробной информации

1 голос
/ 01 февраля 2012

Я хотел бы отослать вас к этому превосходному сообщению в блоге Тодда МакДермида, Правильное использование соединений в задаче сценария служб SSIS

0 голосов
/ 03 марта 2014

Я не помню ссылку, где я нашел это. но это просыпается! (только вы должны перейти на C # или найти способ вставить VB, это будет легко) У SSIS есть проблемы с приведением Object_COM к IDTSConnectionManager, я потратил много времени на это, поэтому OleDbConnection исправлю это.

Использование диспетчера подключений и имени подключения OLEDB_NameConnectionTo_SQLServer, если вы используете storesProcedures или функцию в запросе символа "?" важно поставить параметры после, я правда не знаю почему так сорваться

Вы должны добавить эту ссылку.

с использованием Microsoft.SqlServer.Dts.Runtime.Wrapper;
using 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());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...