Я не помню ссылку, где я нашел это. но это просыпается! (только вы должны перейти на 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());
}