Это банка глистов:)
Существует четыре основных способа работы с SCD в SSIS:
1. Использование встроенного компонента SCD
2. «Прокручивать свои собственные» с использованием поисков, условных разбиений, производных столбцов и различных мест назначения.
3. Использование T-SQL MERGE
4. Использование стороннего компонента Kimball SCD
Я предупрежу вас о своем уклоне в сторону # 4 - я написал это. Но вот мой анализ группы.
1 - хорошее решение для «маленьких» и «легких» размеров. Почему это хорошо? Это понятно, обрабатывает SCD 1 и 2 и прост в настройке. Но почему только «маленькие» и «легкие» размеры? Потому что он использует внутренний некэшированный поиск (RBAR), который нельзя улучшить. Потому что, если вы что-то измените в нем (перезапустите мастер), это уничтожит все изменения, которые вы внесли в поток данных. И потому что он не будет обрабатывать строки, где чувствительность к регистру не важна, или конечные пробелы не важны.
2 - хорошее решение для больших размеров. Это хорошо, потому что он работает довольно хорошо и «хорошо документирован», поскольку вы можете точно увидеть, что он делает, из названий компонентов, которые вы используете, и того, как они соединены. Также легко манипулировать и изменять его работу. Недостатком является то, что для настройки и тестирования требуется время.
3 - хорошее решение для огромных размеров. Обычно он превосходит все другие альтернативы. Но это все, что у него есть. Код очень сложный и не очень понятный без множества комментариев.
4 - хорошее решение практически для любого размера, за исключением, может быть, «огромных» размеров. Он «прост» в использовании, как стандартный SCD-компонент, работает так же хорошо или лучше, чем 2, и его можно настроить как 2.
Подробнее о 4 здесь .