Как правильно управлять развертыванием базы данных с помощью проектов баз данных SSDT и Visual Studio 2012?

Я нахожусь в стадии исследования, пытающейся принять Проекты Базы данных 2012 года на существующем небольшом проекте. Я разработчик C #, а не администратор баз данных, поэтому я не особо хорошо разбираюсь в лучших практиках. Я искал в Google и stackoverflow уже несколько часов, но до сих пор не знаю, как правильно обрабатывать некоторые ключевые сценарии развертывания.

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

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

3) Также приветствуются любые другие советы или рекомендации о том, как лучше всего работать с этими новыми технологиями!

ОБНОВИТЬ: Мое понимание проблемы немного возросло с тех пор, как я первоначально задал этот вопрос, и, хотя я нашел работоспособное решение, это было не совсем то решение, на которое я надеялся. Вот переписывание моей проблемы:

У меня проблема связана исключительно с данными. Если у меня есть клиент в версии 1 моего приложения, и я хочу обновить его до версии 5 своего приложения, у меня не возникло бы проблем с этим, если бы в их базе данных не было данных. Я бы просто позволил SSDT разумно сравнить схемы и перенести базу данных за один раз. К сожалению, у клиентов есть данные, так что не все так просто. Схема изменяется с версии 1 моего приложения на версию 2 до версии 3 (и т. Д.) Со всеми данными воздействия. Моя текущая стратегия управления данными требует, чтобы я поддерживал скрипт для каждого обновления версии (от 1 до 2, от 2 до 3 и т. Д.). Это не позволяет мне перейти прямо от версии 1 моего приложения к версии 5, потому что у меня нет сценария переноса данных, чтобы перейти прямо туда. Перспектива создания пользовательских сценариев обновления для каждого клиента или управления сценариями обновления для перехода с каждой версии на каждую большую версию экспоненциально неуправляема. Я надеялся, что есть какая-то стратегия, которую позволяет использовать SSDT, которая облегчает управление стороной данных, может быть, даже такой же простой, как сторона схемы. Мой недавний опыт работы с SSDT не дал мне никакой надежды на существование такой стратегии, но я бы хотел узнать по-другому.

Ответы на вопрос(4)

Ваш ответ на вопрос