Мы использовали проекты базы данных Visual Studio для поддержки текущей схемы проекта, которая хорошо сработала для нас в плане передачи схемы базы данных на новые машины разработки, но мы не использовали ее для обновления сред.Ранее мы использовали сценарии миграции, которые переносят вас из начальной версии в следующую и т. Д. До тех пор, пока вы не выйдете на текущий выпуск, но теперь мы хотим использовать возможности проектов базы данных.
Я недавно прочиталдве публикации Barclay Hill
Управление перемещением данных во время развертывания (Часть 1)
Управление перемещением данных во время развертывания (Часть 2)
Описывает, как выполнять сценарии до и после развертывания при переходе от одной версии к другой, что мы привыкли к большому эффекту, однако сейчас я застрял на чем-то, что не могу решить, и чувствую, что пропустил,У нас есть две базы данных, которые находятся в разных версиях, но сценарии миграции не работают в более старых версиях.Ниже приведена упрощенная версия нашего сценария.
Сценарий
Версия 1
Table1
Столбец ABC CHAR (1)
Версия 2
Table1
ColumnXYZ INT
Перемещение данных с версии 1 на версию 2
Сценарий предварительного развертывания проверяет, какая версия базы данных и является ли онав версии 1 он помещает данные из ColumnABC во временную таблицу.
Сценарий после развертывания проверяет, что мы находимся сейчас в версии 2, проверяет наличие временной таблицы, созданной в сценарии перед развертыванием, и помещает ее вновый столбец ColumnXYZ после преобразования char в int.
версия 3
Table1
Column123 INT
Когда мы обновляем базу данных с версии 1 до версии 2 итогда до версии 3 все работает нормально.Однако если у нас есть база данных в версии 1 и мы хотим перейти к версии 3, сценарий после развертывания завершится неудачно, так как ColumnXYZ не существует, как сейчас Column123.
В старом методе миграции это не было быПроблема заключается в том, что развертывание проходит через каждую из версий по одной, но это не то, как работают проекты базы данных.Кто-нибудь еще прошел через это?Как вы справились с этим, и я что-то упустил очевидное?