2014-10-16 2 views
0

Таблица A импортируется из файла Excel в SQL Server. Серьезные операции обновления и удаления, выполняемые в таблице, заменяют определенные столбцы на определенные значения. Я написал Proc для этого, но так как я начинаю использовать SSIS, мне нужно знать, можно ли это выполнить через Execute SQL Task или с помощью любого другого преобразования.Задача обновления и удаления SSIS

+0

Вы можете, безусловно, выполнить хранимую процедуру, используя задачу выполнения sql. Если процедура возвращает набор результатов, который вы пытаетесь проникнуть в поток данных, вы также можете использовать контрольный элемент OLE DB для выполнения процедуры. Если вам нужно включить параметры, вы можете найти много полезных блогов на эту тему, например [этот] (http://geekswithblogs.net/stun/archive/2009/03/05/mapping-stored-procedure-parameters- в-SSIS-оле-БД-источника editor.aspx). – Greenspark

+0

Проблема с тем, что Proc запускается в начале потока данных. Я хочу, чтобы обновления удалялись с помощью Proc для новых загружаемых данных. Когда я использую proc в задаче выполнения, изменений в таблице назначения не было. – AllPigsREqual

+0

Возможно, вам придется разбить вещи на несколько потоков данных. Сначала выполняйте импорт и начинайте новый поток данных после завершения всего следующего потока данных с помощью proc. Используйте ограничение приоритета, чтобы убедиться, что proc не выполняется до завершения загрузки. – Greenspark

ответ

0

Да, это может быть достигнуто либо медленно изменяющимся компонентом измерения, либо компонентами поиска, но для обоих из них требуется выполнить обновление RBAR (строка по агонистической строке). Если у вас есть небольшой объем данных < 50 000 записей), это, вероятно, нормально, но он просто не работает для больших наборов данных.

При использовании компонентов поиска или SCD поток данных разбивается на поток вставки и обновления. Поток вставки достаточно быстр, но поток обновления должен быть загружен в задачу выполнения SQL, которая выполняет обновление по одной строке данных за раз.

Это отличается от метода ELT, когда вы выполняете один оператор UPDATE, который выполняет все обновления в одной партии. Это, как правило, намного быстрее.

Если вы решили не использовать подход SSIS RBAR, вы можете выполнить ваши данные Excel, а затем использовать задачу выполнения SQL (в потоке управления) для вызова существующего SP. Таким образом может выполняться пакетное обновление, а не RBAR.

+0

Данные за несколько миллионов записей. Я буду включать в поток данных один для загрузки n для операций. У меня будет приоритет. Я работал над Informatica, весь процесс был бы намного проще. Но в любом случае это также связано с недостатком adv n! – AllPigsREqual

+0

На самом деле я не вижу причин использовать RBAR для выполнения SQL-задачи в SSIS. Если у вас есть рабочий метод, зачем переходить в SSIS? –

+0

SSIS используется исключительно для импорта плоских файлов. Dbs были MS Access, и теперь будет SQL – AllPigsREqual

Смежные вопросы