Я каждый день использую службы SSIS для обслуживания и управления большим хранилищем данных и кубом. Я занимаюсь 100% бизнес-аналитикой и хранением данных в течение двух лет. До этого я был разработчиком .NET-приложений для 10.
Ценность SSIS в том, что он является механизмом рабочего процесса для перемещения данных из одного места в другое с, возможно, некоторыми ограниченными преобразованиями и условными ветвлениями по пути. Если ваши пакеты содержат много скриптов, значит, ваша команда использует SSIS для неправильных задач, или не умеет работать с SQL, или поддалась ажиотажу. Пакеты SSIS очень сложно отлаживать. Компоненты сценария — это сущий кошмар, и их следует использовать только для форматирования, зацикливания или в крайнем случае.
Я пытался использовать SSIS несколько раз, но отказался от этого. ИМО, намного проще просто делать все, что мне нужно, на C #. SSIS слишком сложен, в нем слишком много подводных камней, и это того не стоит. Гораздо лучше потратить больше времени на улучшение навыков C #, чем на изучение SSIS - вы получите гораздо большую отдачу от своего обучения.
Кроме того, намного проще найти и поддерживать функциональность в решении VS. Модульное тестирование с VS - это просто. Все, что мне нужно сделать, это проверить исходный код в Subversion и проверить, как он загружается. Модульное тестирование пакетов SSIS, мягко говоря, очень сложное.
Кроме того, были ситуации, когда SSIS молча не заполнял некоторые столбцы в некоторых строках, просто пропускал их, не вызывая исключений. Мы потратили много времени на устранение неполадок и выяснение того, что происходит. Разработка альтернативного решения на C # заняла менее часа, а работает без проблем два года.
На мой взгляд, SSIS предназначен только для операций ETL и не должен содержать никакой логики за пределами этой области.
SSIS не является программой. Многие задачи в SSIS выполнять быстрее, и вы получаете очень хорошую подробную информацию о прогрессе и ошибках как администратор, что может быть очень хорошо в сценариях, которые SSIS предназначен для решения, потому что иногда что-то идет не так, и администратору нужно много Информация.
При этом SSIS на самом деле не так уж и полезен, если у вас нет этого материала для самостоятельного объяснения - они предназначены для чего-то, слишком много погружаясь в общее программирование, делает их отстой.
У меня был неудачный опыт работы над проектом, в котором мы думали, что SSIS будет достаточно хорошим решением для агрегирования и объединения данных из нескольких источников. К сожалению, сначала он работал отлично, но затем требования изменились, и мы (в конце концов) поняли, что это не тот инструмент.
возможно, мы просто использовали его неправильно, но у нас возникли большие трудности, если мы когда-либо изменили нашу схему и в конечном итоге просто повторно использовали наши определения ORM из внешнего интерфейса, чтобы написать собственный инструмент на C # для этого. Поскольку у нас уже была модель данных, это оказалось на удивление легко. очевидно, что YMMV и я ни в коем случае не являемся экспертом по SSIS, но в этом случае SSIS вызвал много дублирующей работы и головных болей, когда просто закатав рукава и «ручное кодирование» оказалось проще, чем ожидалось.
Поэтому я бы много подумал о гибкости при рассмотрении SSIS.
SSIS имеет свое место, и это место не является общим программированием или заменой хранимых процедур. Он исходит из школы ETL (извлечение, преобразование и загрузка), и в этом его сила.
Старое название (DTS, Data Transformation Services) и новое название (SSIS, Sql Server Integration Services) ясно указывают на то, что это служба (или набор служб), предназначенная для манипулирования данными для интеграции базы данных SQL Server в более крупные процессы. .
Если вы хотите переместить данные программно, вы можете посмотрите на Rhino ETL.
Я также работаю над собственной инфраструктурой, Fluent ETL, так как считаю, что SSIS слишком задействован для простых задач с данными, связанных с разработкой, таких как загрузка данных модульного тестирования из CSV-файла.