2016-10-31 3 views
0

Я новичок в DBA и не очень много людей SQL, поэтому будьте нежны, пожалуйста.Как повторить многоэтапную смену схемы (изменения схемы ETL?)

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

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

Я использую проект базы данных SQL в VS 2015 для поддержки схемы и использования схемы для обновления схемы БД. Я хотел бы сделать его повторяемым или автоматическим, если это возможно, поэтому я могу проверить его в непроизводственной базе данных, чтобы получить правильное движение: смените schema-> run ETL-> change schema. Есть ли способ применить изменения схемы из ETL или для этого требуются ручные операции? Есть ли способ сохранить две схемы в файлах, а затем применить их, кроме VS, опубликовать или сравнить?

ответ

1

Существует SQL TASK, которая позволяет делать то, что вы хотите сделать. Вы хотите изменить таблицу (добавить столбцы), перенести данные из старых столбцов в новые столбцы, а затем отбросить старые столбцы.

1) Alter table tableA add column .. 
2) update table tableA set .. 
3) alter table tableA drop column... 

Пожалуйста, внимательно проверьте свой код перед его запуском.

+0

Благодаря Benjamin. Итак, как вы думаете, я должен пропустить SSIS и проект базы данных? Они кажутся хорошими костылями для неофитов SQL в теории, не настолько уверенными в реальности. – jlear

+0

О, вы говорите о задаче SQL в SSIS? Неважно. – jlear

0

Это сработало! Вот пример ETL. Обратите внимание, что для DelayValidation важно установить значение true для потоков данных и отключить ValidateExternalMetadata для некоторых операций в потоках данных, поскольку база данных не является статичной.

Example Control Flow that Modifies Schema