Как вы управляете своими проектами баз данных sqlserver для новых сборок и миграций? - PullRequest
2 голосов
/ 20 апреля 2010

Как вы управляете сборкой / развертыванием / миграцией базы данных сервера SQL для проектов Visual Studio?

У нас есть продукт, который включает разумную часть базы данных (~ 100 таблиц, ~ 500 процедур / функций / представлений), поэтому мы должны иметь возможность развертывать новые базы данных текущей версии, а также обновлять старые базы данных до текущая версия. В настоящее время мы поддерживаем отдельные скрипты для создания новых баз данных и миграции между версиями. Ясно, что не идеально, но как кто-то еще имеет дело с этим?

Это сложно для нас, потому что у многих клиентов, у каждого из которых есть свой экземпляр db, вместо того, чтобы просто говорить, что экземпляры dev / test / live на наших собственных веб-серверах, но процессы, связанные с управлением dev / test / live для других, должны быть похожим.

ОБНОВЛЕНИЕ: Я бы предпочел не использовать какие-либо проприетарные продукты, такие как RedGate (хотя я всегда слышал, что они действительно хороши, и буду рассматривать это как решение).

Ответы [ 3 ]

2 голосов
/ 20 апреля 2010

Мы используем Red-Gate SQLCompare и SQLDataCompare для обработки этого. Идея проста. Оба сравниваемых продукта позволяют вам поддерживать полное изображение схемы или данных из выбранных таблиц (например, таблиц конфигурации) в виде сценариев. Затем вы можете сравнить любую базу данных со сценариями и получить сценарий изменения. Мы храним скрипты в нашем контроле исходного кода Mercurial и помечаем метки для каждого выпуска Поддержка может затем пойти получить скрипт для любой версии и использовать инструменты Redgate для создания с нуля или обновления.

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

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

Инструменты Redgate также помогают нам в разработке, поскольку упрощают управление исходным кодом схемы и данных конфигурации очень детально (каждый объект базы данных может быть размещен в своем собственном файле)

1 голос
/ 02 января 2013

Вопрос был задан до того, как появились проекты SSDT, но я определенно так и поступил бы сейчас, вместе с созданными вручную сценариями миграции для структурных изменений БД, где есть данные, которые могут быть затронуты.

0 голосов
/ 21 апреля 2010

Есть также метод MS VSTS (описание 2008 здесь ), кто-нибудь получил хорошую статью о том, как сделать это с 2010 годом, и плюсы / минусы использования этих инструментов?

...