Я пробовал RedGate и проект базы данных Visual Studio, и я предпочитаю хранить определение базы данных в проекте базы данных. Как только база данных становится частью решения, вы можете использовать предпочитаемого поставщика системы контроля версий. Большинство из них имеют отличную интеграцию с Visual Studio.
С инструментами SSDT вы получаете «последнюю версию» определения базы данных, что позволяет вам легко сравнивать схемы и генерировать сценарии обновления схемы.
Тем не менее, схема, как правило, является лишь частью уравнения. В реальной жизни оказывается, что базы данных уже содержат много данных. И мои пользователи, как правило, разочаровываются, когда теряют его.
Поэтому, как только я развернул v1.0, возникла необходимость в поддержке сценариев обновления. Иногда они просто содержат изменения схемы, но во многих случаях мне нужно создавать значения по умолчанию на основе содержимого какой-либо другой таблицы, нужно снимать определенное ограничение до тех пор, пока я не заполню данные и т. Д. Обычно простое обновление схемы не совсем обрезает ее. Я предпочитаю, чтобы эти сценарии обновления находились в отдельной папке в проекте базы данных. Обычно это выглядит как «обновление с версии 1.0 до версии 1.1».
В моих базах данных всегда есть справочная таблица, в которой указан текущий номер версии, поэтому я могу заблокировать несовместимые обновления. Первое утверждение в моих скриптах обновления проверяет текущую версию и выручает, если она отличается от ожидаемой.
Еще одним преимуществом проектов базы данных является возможность развертывания различных наборов данных на основе одной и той же схемы. У меня есть разные наборы данных для разработки, команды QA, проверки приемлемости для пользователей и для автоматизированных интеграционных тестов. Поскольку у проекта базы данных может быть только 1 сценарий после развертывания, задача состоит в том, чтобы создать новый проект базы данных, который ссылается на «главный» проект, и сделать настраиваемый набор данных частью процесса после развертывания этого проекта.
Это были мои 2 цента. Какой бы процесс вы ни предприняли, прежде всего, он должен соответствовать вам и вашей команде и, надеюсь, поддержать вас в большинстве общих задач.