Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SSIS. Отслеживание изменений и добавление новых записей  [new]
still1st
Member

Откуда:
Сообщений: 8
Добрый день!

Есть задача по миграции данных из Oracle Database в MS SQL. Сама миграция проходит успешно, реализация с помощью SSIS пакета. Теперь необходимо отслеживать добавление новых и обновление существующих записей в источнике.

Использовал компонент Slowly Changing Dimension. При небольшом количестве записей отрабатывает нормально, а для таблицы с 4.5 миллионов записей жутко виснет и под подсчетам закончит выполнение примерно через 23 часа, что является неприемлемым результатом.

Смотрел в сторону Tabble Difference, но он как-то некорректно отрабатывает в случаях, когда встречаются NULL значения.

Kimball Method SSIS Slowly Changing Dimension Component, уже при настройке начинал жутко виснуть.

Довольно распространенная задача и наверняка кто-нибудь уже занимался ей. Заранее большое спасибо всем откликнувшимся.
3 сен 12, 07:32    [13103073]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Отслеживание изменений и добавление новых записей  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
как вариант, расчитывать контрольную сумму по каждой строке (либо вычисляемое поле, либо статичное)
а потом делать merge источника и получетеля
3 сен 12, 08:52    [13103166]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Отслеживание изменений и добавление новых записей  [new]
Andrey Sribnyak
Member

Откуда: Киев
Сообщений: 600
still1st,


1. Добавляете в таблицу Oracle поле UpdateTime
2. Заполняете\обновляете это поле при вставке\обновлении любой записи в строке
3. Создаете индекс, по полю UpdateTime

4. в ssis в источнике указываете НЕ всю таблицу, а только запрос, с фильтрацией по UpdateTime c запасом (например 2-3 дня, если обработка происходит раз в сутки)
5. Добавляете Lookup (Cashe - No cashe, Connection OleDB - таблцица КУДА вы добавляете поле). При этом выводите не совпадающие строки в (Redirect rows to no natch output)
6. В зависимости от того, у нас Lookup Match Output либо Lookup No Math Output мы обновляем, либо добавляем данные
3 сен 12, 13:39    [13105282]     Ответить | Цитировать Сообщить модератору
 Re: SSIS. Отслеживание изменений и добавление новых записей  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3755
Andrey Sribnyak
still1st,


1. Добавляете в таблицу Oracle поле UpdateTime
2. Заполняете\обновляете это поле при вставке\обновлении любой записи в строке
3. Создаете индекс, по полю UpdateTime

4. в ssis в источнике указываете НЕ всю таблицу, а только запрос, с фильтрацией по UpdateTime c запасом (например 2-3 дня, если обработка происходит раз в сутки)
5. Добавляете Lookup (Cashe - No cashe, Connection OleDB - таблцица КУДА вы добавляете поле). При этом выводите не совпадающие строки в (Redirect rows to no natch output)
6. В зависимости от того, у нас Lookup Match Output либо Lookup No Math Output мы обновляем, либо добавляем данные

все абсолютно верно кроме того что вместо лукап компонента производительность которого будет тут узким местом - лучше все измененные данные слить в промежуточную пустую таблицу, а потом сделать sql скриптом MERGE с таблицей приемником.

Ну и опять же никто не мешает прикрутить сюда и Checksum
3 сен 12, 14:14    [13105617]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить