Развернуть / запустить изменения базы данных перед автоматической сборкой - PullRequest
1 голос
/ 20 апреля 2010

Я использую SQL Server и Visual studio. У меня автоматическая сборка через CCNET. Когда я фиксирую свой код в SVN, автоматическая сборка запускается, и все модульные тесты запускаются с поддельными / заглушки

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

Ответы [ 2 ]

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

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

Я бы также порекомендовал проверить Data Dude (просто Google его), я не использовал его, но, насколько я понимаю, его можно использовать для автоматизации обновлений БД (может быть неправильно).

Я бы сказал, что я не рекомендую использовать инструмент сравнения баз данных для генерации скриптов ... без особой осторожности. Проблема, как правило, заключается в том, что вы сравниваете свою базу данных разработчика (где ваши изменения), скажем, с базой данных сборки, но ваша база данных может содержать (и, вероятно, будет) другие изменения, которые вы внесли в исправления ошибок «в процессе», над которыми вы можете работать на.

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

Счастливая автоматизация: -)

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

Само собой разумеется, что вам нужно автоматизировать запуск сценариев изменения базы данных - проблема в том, как вы решаете, что запускать. Ответ заключается в том, что вам необходимо сохранить версию схемы в базе данных (или в метаданных базы данных) и выбрать, какие сценарии следует запускать соответствующим образом - будь то для создания базы данных с нуля или для внесения соответствующих изменений.

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

Как создать «встроенный» файл базы данных SQL 2008, если он не существует?

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

Я гонялся за этим немного дальше, так как написал выше - оказывается, что то, что я делаю, не отличается от Ruby Migrations (я думаю, что нечто подобное также присутствует в Subsonic), за исключением того, что я этого не делаю в настоящее время есть какая-либо «отключенная» возможность отменить изменение схемы (интересная идея, которая меня беспокоит по поводу наличия потенциально деструктивного кода «вживую»). Существует проект с открытым исходным кодом .NET Migrator.net , который выглядит полезным, но я не уверен, насколько активно он поддерживается.


Добавление

С тех пор, как я написал этот код сущностной платформы, он впервые появился, и они начинают продвигаться вперед с миграциями - так что теперь это стоит посмотреть. Тем не менее, я не думаю, что он еще там, и как некоторые другие варианты, которые я видел, это не просто. Мне нужно собрать вещи и сделать их доступными!

...