Сценарии перемещения данных проекта Visual Server Database работают в базах данных разных версий - PullRequest
6 голосов
/ 25 ноября 2011

Мы использовали проекты базы данных 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.

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

Ответы [ 2 ]

0 голосов
/ 15 октября 2013

На мой взгляд, у вас есть как минимум два варианта:

1) Требуется путь обновления 1-> 2-> 3.

2) Измените свою привязку ColumnABC-ColumnXYZ к следующему:

  • Pre:
    • (если ColumnXYZ не существует)
      • Добавить столбец ColumnXYZ (int)
      • Set ColumnXYZ = [некоторое преобразование ColumnABC]
  • Установка:
    • Добавление ColumnXYZ пропущено, поскольку оно уже есть.
  • Сообщение:
    • Никаких действий не требуется
0 голосов
/ 09 августа 2012

Жаль видеть, что вы не получили никакого ответа здесь.Удалось ли вам в конце концов что-то придумать?

Я только что начал исследовать «чувак данных», и все, что связано с движением данных, определенно кажется слоном в комнате.

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

(Пожалуйста, дайте мне знать. Я все еще пытаюсь решить, стоит лиинвестировать в это или просто пойти по классическому маршруту DIY.)

...