Каноническим примером в стеке Microsoft для развертывания T-SQL является процесс развертывания проекта базы данных Visual Studio. В этом процессе схема базы данных, процедуры, назначение прав и почти все остальное хранятся в виде фрагментов проекта VSDB, что означает, что они хранятся в виде файлов определений SQL и проверяются под контролем исходного кода (это нормально для SVN). Процесс 'build' предоставляет файл .dbschema, который представляет собой синтез всего проекта VSDB (это прославленный файл XML). Файл .dbschema затем отправляется на сервер развертывания (сервер разработки, сервер проверки качества, даже сервер производства) и «развертывается». Развертывание осуществляется с помощью инструмента vsdbcmd , который запустит сложную разность между сервером развертывания и файлом .dbschema и «выровняет» сервер по содержимому файла .dbschema, используя операторы CREATE / ALTER / DROP в зависимости от обстоятельств, исходя из того, что существует в целевой базе данных / сервере.
Непрерывно интегрированный процесс запускает ночную сборку, удаляет .dbschema вместе с другими результатами на тестовом SQL-сервере, развертывает .dbschema, затем запускает проверочные тесты сборки, и если все хорошее в конце концов отбросит полную сборку и QA подтвержденный результат, ежедневное «падение». Возможна полная интеграция на всех этапах развертывания в производство, но ее обычно избегают из-за риска непредвиденных простоев на центральном, производственном сервере. Однако полная интеграция и развертывание в производство обычно является нормой для многосерверных сред, где «производство» означает сотни / тысячи развернутых серверов.
Теперь вы говорите, что хотите выполнить развертывание с использованием Hudson, и это хорошо, за исключением того, что вам нужно воссоздать все, что я описал в приведенных выше шагах, как этапы сборки Ants, и вы потратите следующие 10 лет на переосмысление проекта VS DB такие понятия, как файл .dbschema и такие инструменты, как vsdbcmd. Я не тот, кто может призвать инвестировать в покупку лицензии на сервер сборки на базе VSDB и TFS, но я говорю, что не знаю комплексного решения, доступного в OSS. Я считаю, что в VS 2010 проекты баз данных выпускаются в стандартной версии. С VS 2008 вам понадобится лицензия высокого класса.
Что касается пользователей, выполняющих изменения при стрельбе из SSMS: вы можете предотвратить их, используя DDL триггеры , вы можете отслеживать их, используя Уведомления о событиях , или вы можете полностью проверять их, используя C2-совместимый аудит .