Я новичок в SSIS, поэтому, пожалуйста, потерпите меня.
Я создал проект служб Integration Services для SQL Server 2008 для импорта данных из старой базы данных в новую. Одна из вещей, которые мне нужно сделать, это импортировать данные из двух старых исходных таблиц в одну новую таблицу назначения.
Каков наилучший способ сделать это?
Я легко вижу нужные результаты с помощью простого запроса внутреннего соединения с использованием tsql, но мне не повезло с использованием пакета служб SSIS. Мой текущий подход состоит из трех этапов:
- Добавить компонент источника OLE DB, который извлекает все столбцы из моей первой исходной таблицы
- Добавление компонента «Уточняющий запрос», который является следующим шагом после моего компонента «Источник OLE DB». В этом я запрашиваю вторую исходную таблицу «используя результаты SQL-запроса», которая не возвращает нулевых значений, затем перетаскиваю идентификатор внешнего ключа из «доступных входных столбцов» в первичный ключ в доступных столбцах поиска. Я также отмечаю флажки в «доступных столбцах ввода», чтобы добавить еще 2 столбца.
- Добавить OLE DB Destination, указывает на мою таблицу назначения.
Этот процесс завершается неудачей на первом этапе, а не на этапе поиска, и завершается с ошибкой «Строка не дала совпадений во время поиска». Внешний ключ не может быть нулевым, и, очевидно, первичный ключ также не может. Я использовал оператор SQL на шаге к тому, чтобы я мог убедиться, что я не получаю нулевые значения даты в столбцах (их было несколько), но я все еще получаю ошибку. Если я выведу путь ошибки первого шага в пункт назначения плоского файла, я получу пустой CSV (просмотр в режиме отладки говорит, что в плоский файл поступает ~ 600 тыс. Записей).
В данный момент я довольно озадачен, и, похоже, это должно быть очень легкой задачей. Я искал в Интернете ответы и нашел эту ссылку , которая звучит точно так же, как и у меня, но изменение настроек кэша не помогло.
Помощь оценена!