Я рад сделать скачок в использовании DAC Fx и разработке декларативной базы данных.Основным препятствием для меня является то, как обрабатывать сложные миграции данных в нескольких различных версиях схемы.В старом мире мы можем просто запускать все наши сценарии обновления по порядку, что гарантирует, что схема находится в правильном состоянии во время переноса данных.Как это работает, когда путь обновления является динамическим?
Например, предположим, что существует несколько версий моей схемы (DACPAC1-4) для существующих экземпляров:
- DACPAC1: таблица A существуети имеет ценные данные клиента
- DACPAC2: таблица A устарела и заменена на tableB и нормализованную tableC;добавляет новый скрипт tableD
- после развертывания: переместить данные из таблицы A в новую таблицу B и таблицу C;drop tableA
- DACPAC3: в tableC есть новый столбец, допускающий обнулениеX
- сценарий после развертывания: заполняет обнуляемый столбец на основе таблицыD
- DACPAC4: tableC.columnX не обнуляется
Если мне нужно иметь возможность поддерживать обновление серверов DACPAC1-3 до последней версии DACPAC4, теперь мне нужно написать свои до и после развертыванияСценарии достаточно умным способом, чтобы определить, какой DACPAC в данный момент находится на цели, и правильно обработать шаги миграции данных по порядку.Кроме того, я не могу просто повторно использовать наивные сценарии после развертывания, которые я написал изначально, поскольку они зависят от промежуточных версий схемы.
Заранее благодарен за любой совет!