Использование существующего соединения в компоненте сценария (SSIS) - PullRequest
3 голосов
/ 17 февраля 2010

У меня настроено соединение OLEDB в диспетчере соединений, и я хочу использовать его в сценарии. Сценарий должен вызвать сохраненный процесс и затем создать строки буфера. Я добавил соединение к соединениям, доступным для скрипта, и это мой код.

Boolean fireagain = true;

SqlConnection conn = new SqlConnection();

conn = (SqlConnection)(Connections.Connection
    .AcquireConnection(null) as SqlConnection);


SqlCommand cmd = new SqlCommand();

conn.Open();

ComponentMetaData.FireInformation(
           0, "Script", "Connection Open", string.Empty, 0, ref fireagain);

cmd.Connection = conn;
cmd.CommandText = "up_FullTextParser_select" ;
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.AddWithValue("Phrase", DbType.String).Value = Row.Keywords;
cmd.Parameters.AddWithValue("SpecialTerm", DbType.String).Value = "Exact match";
cmd.Parameters.AddWithValue("StopListId", DbType.Int32).Value = 0;
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

while (rdr.Read())
{
    TermsBuffer.AddRow();

    TermsBuffer.Term = rdr[0].ToString();
}

conn.Close();

В любом случае, похоже, сбой на AcquireConnection. Я неправильно это преобразовал? Должен ли я использовать другой способ использования соединений, определенных вне сценария?.

Ответы [ 4 ]

3 голосов
/ 09 апреля 2012

Нельзя привести соединение OLEDB к объекту SqlConnection. Вы должны использовать объект OleDbConnection. Смотрите пример - http://blogs.msdn.com/b/mattm/archive/2008/08/22/accessing-oledb-connection-managers-in-a-script.aspx

1 голос
/ 30 июня 2015

Если вы настаиваете на использовании соединения OLEDB, вы не можете использовать AcquireConnection, но вы можете извлечь строку соединения и затем использовать ее для создания соединения OLEDB:

string connstr = Dts.Connections["my_OLEDB_connection"].ConnectionString;
System.Data.OleDb.OleDbConnection objConn = new System.Data.OleDb.OleDbConnection(connstr);   

Это может неработать, если строка подключения создается с помощью какого-либо выражения.

1 голос
/ 17 февраля 2010

Вам необходимо использовать поставщика управляемого соединения.

1 голос
/ 17 февраля 2010

В этом примере MSDN подразумевается, что вы используете AcquireConnection неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...