Скрипты перемещения данных проекта базы данных Visual Server выполняются в разных версиях баз данных.

Мы использовали проекты базы данных Visual Studio для поддержания текущей схемы проекта, которая хорошо зарекомендовала себя в отношении переноса схемы базы данных на новые машины разработки, но мы не использовали ее для обновления сред . Раньше мы использовали сценарии миграции, которые переводят вас с начальной версии на следующую и так далее, пока вы не перейдете к текущему выпуску, но теперь мы хотим использовать возможности проектов баз данных.

Недавно я прочитал два сообщения Барклая Хилла

Управление перемещением данных во время развертывания (Часть 1)
Управление перемещением данных во время развертывания (Часть 2)

В котором описывается, как это сделать сценарии до и после развертывания при переходе от одной версии к другой, которые мы использовали с большим эффектом, однако теперь я застрял на чем-то, что я не могу решить, и чувствую, что пропустил. У нас есть две базы данных, которые находятся в разных версиях, но сценарии миграции не работают в более старой из двух. Ниже приводится упрощенная версия нашего сценария.

Сценарий

Версия 1

Таблица1
СтолбецABC CHAR (1)

Версия 2

Таблица1
СтолбецXYZ INT

Движение данных от версии 1 до версии 2

Сценарий перед развертыванием проверяет версию базы данных и, если версия 1, помещает данные из ColumnABC во временную таблицу.

Сценарий после развертывания проверяет, что мы сейчас находимся на версии 2, и проверяет наличие временной таблицы, созданной в сценарии предварительного развертывания, и помещает ее в новый столбец ColumnXYZ после преобразования символа в int.

Версия 3

Таблица1
Column123 INT

Когда мы обновляем базу данных с версии 1 до версии 2, а затем до версии 3, все работает нормально. Однако, если у нас есть база данных версии 1 и мы хотим перейти к версии 3, сценарий пост-развертывания завершится неудачно, потому что нет ColumnXYZ, как сейчас Column123.

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

6
задан Michael Myers 9 March 2012 в 17:02
поделиться