Службы Integration Services и сырой SQL (T-SQL) - PullRequest
2 голосов
/ 29 октября 2009

Когда бы вы использовали Integration Services, а когда просто использовали бы SQL / хранимые процедуры? Каковы преимущества использования одного или другого?

Если вы переносите данные из устаревшей системы, вы бы использовали SSIS или только SQL?

Ответы [ 7 ]

2 голосов
/ 02 ноября 2009

Обычно я использую BCP для любых плоских файлов, связанных вызовов сервера для передачи с сервера на сервер и встроенной поддержки XML для файлов XML, а затем хранимых процедур для любого преобразования.

Служба SSIS полезна для сложных процессов ETL ИЛИ, если вам нужно сохранять состояние от шага к шагу. В противном случае это просто окажется дополнительным бременем, так как его сложно отлаживать, глючить, и я лично считаю, что на его разработку уходит больше времени.

1 голос
/ 05 ноября 2009

МИГРАЦИОННЫЕ ДАННЫЕ ИЗ СИСТЕМЫ LEGACY

  1. Если вы переносите данные из унаследованной системы и у вас есть возможность восстановить базу данных унаследованной системы на новый сервер, то вам не обязательно нужен SSIS. Команды T-SQL на новом сервере, вероятно, будут быстрее создавать сценарии и выполняться, чем поток данных служб SSIS, если вы принимаете необработанные данные целиком.

  2. Если устаревшие данные доступны только через связанный сервер или через SSIS, то вам, вероятно, лучше использовать SSIS для создания таблиц назначения и загрузки данных. Вызовы хранимых процедур, которые передают данные через связанный сервер, как правило, медленнее, чем соединения потока данных служб SSIS.

  3. Если устаревший сервер является базой данных, отличной от SQL Server (например, MYSQL или Oracle), то вам лучше всего использовать SSIS и потоки данных. Вы можете сделать это через связанные серверы, но это, вероятно, потребует дополнительной работы.

  4. Даже если вы решите использовать SSIS для извлечения данных с другого сервера, я бы рекомендовал создавать все таблицы в качестве команд T-SQL, а не полагаться на параметр создания таблицы в потоке данных Destination. Опция создания таблицы не создает индексы, кластерные индексы, первичные ключи и т. Д., А также по умолчанию для каждого поля установлено значение NULL. При переносе данных с устаревшего сервера я обычно создаю сценарий исходного объекта, изменяю сценарий и запускаю измененный сценарий на целевом сервере.

  5. Я бы не рекомендовал использовать мастера по умолчанию в SSIS для импорта данных, если это не однократный процесс. Как правило, они не являются лучшими ни с точки зрения производительности, ни с точки зрения обслуживания. Даже при однократной загрузке данных я обычно предпочитаю составлять сценарии для каждого объекта в отдельности, чтобы не повторять ошибок устаревшей базы данных в новой базе данных.

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

ДРУГИЕ СЦЕНАРИИ

  1. Обычно я называю хранимые процедуры шагами задания агента SQL Server, когда я хочу разделить процессы на отдельные шаги для целей восстановления или мониторинга производительности. Например, если я знаю, что мне нужно подготовить данные перед тем, как приступить к выполнению отчета SSRS, я обычно выполняю двухэтапное задание агента SQL Server. Первый загружает данные в таблицу, а второй запускает общее расписание.

  2. Другой сценарий состоит в том, что у меня есть несколько основных таблиц хранилища данных, которые необходимо загрузить перед выполнением нескольких других зависимых процессов. Обычно я использую хранимую процедуру для обработки сложных правил очистки, которые загружают таблицу, а затем запускаю несколько других заданий, которые используют вновь загруженную таблицу. Все последующие шаги могут быть командами T-SQL для запуска других заданий, командами T-SQL для очистки большего количества данных, пакетами служб SSIS для перемещения данных между серверами или выходными файлами и т. Д.

  3. Я всегда использую SSIS для импорта или экспорта данных. Я не использую эквивалентные команды T-SQL, чтобы сделать это, даже если они доступны. Я делаю это потому, что мне нужны журналы, параметры восстановления, простота разработки, простота обслуживания и стандартизированные рабочие процессы пакетов.

  4. Поскольку я управляю командой разработчиков BI, которые занимаются чем угодно, от написания сложных операторов T-SQL до разработки пакетов SSIS или отчетов SSRS, пакеты SSIS дают нам простой способ понять любого члена моей команды. работа.

0 голосов
/ 06 ноября 2009

Как правило и с некоторыми исключениями: всегда используйте SQL, если вы можете это сделать.

Служба SSIS удобна, когда вам нужен доступ к файлам (csv, excel, txt, ...) или к очень старым базам данных (может быть DBASE или что-то в этом роде), но в чистых транзакциях с базами данных есть несколько вещей, которые вообще могут нельзя делать с чистым, чистым и легким SQL;)

0 голосов
/ 02 ноября 2009

Если вы перемещаете данные с одного сервера sql на другой и ничего не делаете, то использование sql может быть лучше, так как это проще и не требует дополнительных затрат на другой набор инструментов для изучения и управления.

Если, с другой стороны, у вас есть сложные преобразования, вам нужна обработка ошибок, повторяемые и тестируемые конфигурации пакетов или если вы извлекаете данные из других источников, таких как текстовые файлы, электронные таблицы и т. Д., То SSIS хорошо (если в некоторой степени неуклюжая и неряшливая) работа, которая сэкономит время.

Итак ... действительно зависит от ситуации ...

0 голосов
/ 29 октября 2009

Если вы работаете с таблицами, только хранимая процедура является опцией, поскольку механизм SQL будет фактически выполнять задание, в то время как SSIS выполняется механизмом DTExec. SSIS - это инструмент, предназначенный для работы с файлами, внешними источниками и т. Д.

0 голосов
/ 29 октября 2009

Я использую SSIS, когда преобразование будет сложным, особенно если мне нужно извлечь из источников, отличных от SQL Server, таких как электронные таблицы Excel или Visual FoxPro, особенно если мне нужно будет проверить, есть ли уже данные существует до вставки записи с ограничением внешнего ключа.

Итак, если я импортирую оценки, я могу использовать SSIS, чтобы гарантировать, что все учащиеся существуют, а если учащийся существует, просто обновите данные.

Как только я узнаю, что ученики существуют, я могу оценивать их.

Я использовал триггеры и хранимые процедуры на стороне назначения, так как я вставил / обновил представление, чтобы фактически можно было отправлять данные в несколько таблиц за один запрос.

Таким образом, это зависит от источника данных и от того, насколько сложными они будут, поскольку я мог бы воспроизвести, что делает SSIS, но зачем тратить время, поскольку MS сделала это в меру хорошо.

0 голосов
/ 29 октября 2009

В основном MS Integration Services используется для сценариев ETL, импорта данных из различных типов источников данных или сложных преобразований. Если ваш сценарий не один из них, то обычно лучше всего подойдет обычная хранимая процедура.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...