MSBuild: автоматизировать сбор сценариев миграции дб?

Сводка среды.

  • Веб-приложение Asp.net (источник, сохраненный в svn)
  • База данных SQL Server. (Схема базы данных (tables/sprocs) сохраненный в svn)
  • версия дб синхронизируется с версией блока веб-приложения. (сохраненный в таблице 'CurrentVersion')
  • Гудзонский сервер CI, который проверяет веб-приложение от repo и выполняет пользовательский msbuild файл для публикования/упаковывания приложения.

Мой msbuild сценарий обновляет версию блока веб-приложения (Главный. Незначительный. Пересмотр. Сборка) на каждой сборке. 'Пересмотр' установлен на в настоящее время проверяемый svn пересмотр и 'Сборку' к гудзонскому номеру сборки (увеличенный на каждой автоматизированной сборке).

Таким образом, я могу соответствовать приложению к определенному магистральному пересмотру, также получают другую статистику сборки от гудзонского номера сборки.

Я хотел бы автоматизировать сбор сценариев миграции (обновил sprocs и т.д.) добавить к пакету zip. Я предполагаю путем сравнения svn пересмотра дб, который должен все же быть развернут на к развертываемому пересмотру, я могу найти то, что файлы дб изменили в соединительной линии начиная с последнего развертывания на той базе данных/среде.

Это могло легко быть достигнуто путем ручного вызова svn diff -r REVNO:REVNO управляйте для списка измененных .sql файлов. Эти файлы придется затем вручную добавить к пакету. Было бы замечательно, если это могло бы быть автоматизировано.

Во-первых я предположил бы, что должен буду записать пользовательскую задачу проверить версию дб, который должен все же быть развернут на. После этого я довольно не уверен. У кого-либо есть какое-либо предложение о том, как это было бы достигнуто через msbuild задачу, или существующую или пользовательскую?

Наконец у меня будет к autogen сценарий для добавления к пакету, который обновляет таблицу версии базы данных, чтобы быть в синхронизации с приложением.

7
задан David Atkinson 29 September 2016 в 09:49
поделиться

3 ответа

Попробуйте SQL Examiner: http://www.sqlaccessories.com/Howto/Version_Control.aspx

Вы можете автоматизировать сбор сценариев с помощью инструмента командной строки SQL Examiner.

0
ответ дан 7 December 2019 в 09:57
поделиться

Взгляните на проекты баз данных SQL. В VS 2010 они были немного улучшены и имеют встроенные возможности развертывания, которые могут синхронизировать вашу базу данных DEV с другими средами.

Вот несколько хороших ссылок о проектах БД в vs 2010: http://msmvps.com/blogs/deborahk/archive/2010/05/02/vs-2010-database-project-building-and-deployment.aspx

http://weblogs.asp.net /gunnarpeipman/archive/2009/07/29/visual-studio-2010-database-projects.aspx

2
ответ дан 7 December 2019 в 09:57
поделиться

Интегрировать изменения SQL в автоматизированный процесс сборки/развертывания очень сложно. Я знаю, потому что я пытался сделать это пару раз с ограниченным успехом. То, что вы пытаетесь сделать, примерно на правильном пути, но я бы сказал, что это слишком сложно. В своем предложении вы предлагаете собирать конкретные SQL-скрипты, которые должны быть применены к вашей БД во время сборки/пакетирования. Вместо этого вам следует упаковать все ваши дельта-скрипты (за всю историю вашей базы данных) с вашим проектом, и вычислить дельты, которые действительно должны быть применены при развертывании - таким образом, ваш развертываемый пакет может быть развернут в окружениях с базами данных разных версий. Для достижения этой цели вам понадобятся два элемента реализации:

1) Вам нужно упаковать ваши дельты в ваш развертываемый пакет. Обратите внимание, что вы должны упаковать дельты - не статические файлы, которые создают схему в ее текущем состоянии. Эти дельта-скрипты должны находиться в системе контроля исходных текстов. Можно держать статическую схему и в контроле исходных текстов, но вам придется синхронизировать ее с дельта-скриптами. Вы можете использовать такой инструмент, как SQLCompare от Red Gate или версию VS Database для генерации (большинства) дельт из статической схемы. Чтобы поместить дельты в ваш развертываемый пакет, и учитывая, что вы используете svn, возможно, вы захотите рассмотреть svn:externals как способ "мягкого связывания" скриптов дельт с вашим веб-проектом. Затем ваш сценарий сборки может просто скопировать их в ваш развертываемый пакет.

2) Вам нужна система, которая может прочитать список дельта-файлов, сравнить их с существующей базой данных, определить, какие дельты нужно применить к этой базе данных, а затем применить эти дельты (и обновить бухгалтерскую информацию, например, версию базы данных). Существует проект с открытым исходным кодом (спонсируемый ThoughtWorks) под названием dbdeploy, который позволяет достичь этого. Я лично добился некоторого успеха с этим инструментом.

Удачи - это крепкий орешек, который нужно расколоть (правильно).

4
ответ дан 7 December 2019 в 09:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: