Немного поздно, чтобы ответить на этот вопрос, но я надеюсь, что оно того стоит,
SSIS часто неправильно понимают по сравнению с языком программирования. SSIS - это фреймворк, тогда как C # - это язык в .NET Framework. У меня большой опыт работы с большими объемами хранилищ данных и их разработки (набор MSBI), а также разработка больших веб-сайтов (ASP.NET), поэтому я не могу быть предвзятым.
SSIS, если не используется должным образом, может снизить производительность на пар. Пакеты служб SSIS имеют три вида преобразования:
- Блокирующее преобразование - которое может передавать данные только тогда, когда указанное преобразование завершено, извлекая все строки и выполнив необходимые вычисления для него.
- Полублокирующее преобразование - которое может передавать частичные данные
- Non-Blocking - который обрабатывает строку, как только она готова
SSIS работает исключительно хорошо с неблокирующим преобразованием с правильной настройкой потока управления и потока данных. Я использовал его на большем (более 2 ТБ хранилище данных) и могу гарантировать, что это была самая быстрая загрузка. Вы можете проверить блог Microsoft о Мы загрузили 1 ТБ за 30 минут с SSIS, и вы тоже можете
Я согласен с тем, что SSIS снижает производительность при работе с блокирующими преобразованиями, и они должны переноситься T-SQL при необходимости.
Переходя к C #, я принимаю, что SSIS использует .NET Framework и поставщика данных для выполнения задачи. Но C #, как язык, немного более логичен и должен рассматриваться, чтобы иметь дело с бизнес-логикой. Например, если нам нужно запустить exe с другим параметром в зависимости от условия, вы можете написать пакет, который будет учитывать параметры, а затем логически решить, какой параметр необходимо передать для запуска exe-файла. Это было бы длительным процессом, чтобы сделать это в SSIS, в то время как я могу сделать это легко в C #, потому что логическая вещь может быть легко сделана на языке вместо фреймворка.
Теперь дело в том, что является более удобным подходом для решения вашей задачи. SSIS - верный победитель, загружающий большое количество записей, загружающих данные из источника в место назначения, в то время как C # идеально подходит для написания логики. Даже если вам нравится C #, я не рекомендую вам выбирать операции ETL (Extract Transform Load) в больших системах хранилищ данных.