Параметры запроса SSIS для источника ADO .NET

Я пытаюсь получить данные из таблицы MySQL и вставить в таблицу SQL Server, используя соединения ADO .NET в SQL Server 2008 SSIS. В моей задаче потока данных у меня есть источник ADO .NET, который запрашивает таблицу MySQL (выбирает все счета-фактуры) и пункт назначения ADO .NET, который вставляет данные в мою таблицу SQL Server. Теперь я хотел бы добавить параметр в свой источник данных, чтобы я выбирал только max(invoiceNumber), полученный из моей таблицы SQL Server. Я выполнил аналогичную задачу, используя «Команду OLE DB», но проблема в том, что мне нужно запросить базу данных MySQL. Любые идеи, как я могу этого добиться?


person Ali_Abadani    schedule 21.12.2009    source источник
comment
Я бы, если бы я получил правильный ответ   -  person Ali_Abadani    schedule 22.12.2009


Ответы (3)


Установите для параметра Режим доступа к данным в ADO.NET Source значение SQL Command и напишите запрос.

person Damir Sudarevic    schedule 21.12.2009
comment
Я уже делаю это для своего запроса. Откуда взять параметр? - person Ali_Abadani; 22.12.2009
comment
Переменная - сначала запросите локальную БД, поместите результат в переменную и передайте переменную второму запросу. - person Damir Sudarevic; 26.12.2009

Я обнаружил, что единственный способ использовать параметр с источником данных ADO.NET — это обходной путь: перейдите к управлению потоком и выберите поток действий, содержащий ваш источник ADO.NET. В окне свойств вы можете увидеть исходную команду Sql ADO.NET. Перейти к выражению и выбрать свойства: [ВАШЕ ИМЯ ИСТОЧНИКА].[SqlCommand], а затем отредактировать выражение, используя переменные для имитации параметров.

person il_guru    schedule 08.07.2011

Вам не нужно добавлять параметр:

select * 
from invoices
where invoiceNumber = (select max(invoiceNumber) from invoices)

Вышеупомянутое работает в SQL Server. Я предполагаю, что тот же запрос будет работать в MySQL

person James Wiseman    schedule 22.12.2009
comment
Я думаю, вы могли неправильно меня понять. select max(invoiceNumber) должен быть вызван для моей локальной таблицы SQL Server. Затем я могу использовать этот номер для запроса внешней базы данных MySQL. Таким образом, каждый день пакет будет получать новые счета из базы данных MySQL и отправлять их на SQL Server. - person Ali_Abadani; 22.12.2009