Я нахожусь на стадии исследования, пытаясь принять 2012 Database Projects на существующий небольшой проект. Я разработчик С#, а не администратор базы данных, поэтому я не очень хорошо разбираюсь в лучших практиках. Я искал google и stackoverflow в течение нескольких часов, но я до сих пор не знаю, как правильно обрабатывать некоторые ключевые сценарии развертывания.
1) В течение нескольких циклов разработки, как мне управлять несколькими версиями моей базы данных? Если у меня есть клиент на v3 моей базы данных, и я хочу обновить их до версии v8, как мне это сделать? В настоящее время мы используем сценарии миграции схем и данных вручную для каждой версии нашего продукта. Нужно ли все еще делать это отдельно или есть что-то в новой парадигме, которая поддерживает или заменяет это?
2) Если схема изменяется таким образом, что требуется перемещение данных, каков наилучший способ справиться с этим? Я предполагаю, что некоторые работы в Pre-Deployment script сохраняются, а затем Post-Deploy script вернет его в нужное место. Это путь или есть что-то лучше?
3) Любые другие рекомендации или рекомендации о том, как лучше всего работать с этими новыми технологиями, также очень ценятся!
ОБНОВЛЕНИЕ: Мое понимание проблемы немного выросло с тех пор, как я изначально задал этот вопрос, и пока я придумал подходящее решение, это было не совсем то решение, на которое я надеялся. Здесь переписывается моя проблема:
Проблема, с которой я столкнулась, связана с чисто данными. Если у меня есть клиент в версии 1 моего приложения, и я хочу обновить их до версии 5 моего приложения, у меня не было бы проблем с этим, если в их базе данных не было данных. Я бы просто позволил SSDT разумно сравнить схемы и перенести базу данных одним выстрелом. К сожалению, у клиентов есть данные, поэтому это не так просто. Изменения схемы от версии 1 моего приложения до версии 2 до версии 3 (и т.д.) Все данные воздействия. Моя текущая стратегия управления данными требует, чтобы я поддерживал script для каждого обновления версии (от 1 до 2, от 2 до 3 и т.д.). Это мешает мне перейти от версии 1 моего приложения к версии 5, потому что у меня нет миграции данных script, чтобы идти прямо туда. Перспектива создания пользовательских сценариев обновления для каждого клиента или управления сценариями обновления для перехода от каждой версии к каждой большей версии экспоненциально неуправляема. Я надеялся, что существует какая-то стратегия. SSDT позволяет упростить управление передачей данных, возможно, даже так же просто, как и с точки зрения схемы. Мой недавний опыт работы с SSDT не дал мне никакой надежды на такую существующую стратегию, но мне бы хотелось узнать по-другому.