Автоматическая миграция базы данных с помощью MSDeploy

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

  • Веб-сайт ASP.NET MVC 3
  • Проект базы данных Visual Studio 2010
  • База данных SQL Server 2008 R2
  • Windows Server 2008 R2
  • Удаленное развертывание с помощью Web Deploy 2.0 (MS Deploy)

В настоящее время Я могу развернуть наш веб-сайт ASP.NET MVC с помощью инструмента Web Deploy 2.0 (вау, было весело настраивать!). В MSDeploy есть провайдер dbFullSql, но его можно использовать только для развертывания целых баз данных, а не для миграции. MSDeploy оставляет дверь открытой для расширения с помощью провайдера runCommand для выполнения произвольного процесса на удаленном сервере. Я думаю, что смогу использовать это для выполнения моих сценариев миграции таким образом. Тем не менее, я чувствую, что должен быть лучший способ сделать это.

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

РЕДАКТИРОВАТЬ: ответчик (который удалил свой ответ!) сослался на следующую статью: http://www.asp.net/web-forms/tutorials/deployment/web-deployment-in-the- enterprise/deploying-database-projects

Это потрясающий ресурс, о котором я не знал. Большую часть этого контента я читал в той или иной форме, и, к сожалению, эта конкретная статья подтверждает мои собственные подозрения. По сути, нет простого способа продвигать настраиваемые добавочные обновления с помощью текущего инструментария (vaporware обещает лучшую функциональность в будущих выпусках в типичном стиле MS).

В примечании к теме статьи это упоминается.

... рекомендуется использовать VSDBCMD для инкрементной базы данных издательский.

Однако VSDBCMD может генерировать только дельта-скрипты между источником и целью, которым я просто не доверяю при миграции, особенно при развертывании в рабочей среде. Единственное решение, которое упоминается в статье для отправки добавочных обновлений через веб-развертывание, — это создание настраиваемого файла целей WPP с включенным настраиваемым сценарием миграции SQL.

Вы можете настроить веб-развертывание для запуска сценария развертывания SQL, генерируется проект базы данных, но для этого вам нужно создайте собственный файл целей WPP для вашего проекта веб-приложения. Это существенно усложняет развертывание. обработать. Кроме того, Web Deploy напрямую не поддерживает добавочные обновления существующих баз данных.Для получения дополнительной информации об этом подходе см. см. Расширение конвейера веб-публикации для пакета проекта базы данных развернутый файл SQL.

Аргх! Это действительно выглядит сложно. Я читал об этом раньше, и я надеялся, что будет лучший способ. На данный момент я все еще склоняюсь к тому, что мой провайдер runCommand для MSDeploy выполняет SQLCMD.

9
задан Sean Glover 25 June 2012 в 01:29
поделиться