Моя компания предоставляет большое .NET-ориентированное решение. Уровень сервисов взаимодействует с T-SQL-сервером, состоящим из сотен таблиц и хранимых процедур. Наш код C# находится в управлении версиями (SVN), но наши хранимые процедуры и схема отсутствуют.Сохраненные процедуры в контроле источника - автоматизация процесса сборки/развертывания
После долгого лоббирования целесообразного верхнего управления, мне разрешило ознакомиться с нашим (несуществующим) процессом сборки/развертываний для достижения следующих целей:
- Места схема и хранимые процедуры в соответствии с исходным-контролем.
- Автоматизация процесса сборки/развертывания.
Я хотел бы продолжить в стратегии принято отвечать в this post, но есть дополнительные вопросы:
Я хотел бы использовать Хадсон как мой сборки сервера. Является ли это разумным выбором для решения C#/SQL? Какие лучшие альтернативы мне следует изучить?
Предполагая, что у меня есть все триггеры, хранимые процедуры, схема и т. Д. Под контролем источника и что они написаны для отдельных файлов, как мне создать скрипт сборки, который будет учитывать зависимости/ссылки между эти предметы? (SQL Server делает это автоматически, но генерирует один гигантский скрипт)
Как выглядит процесс выполнения обновления на клиенте? то есть я должен сохранить существующие данные таблицы. Как изменить изменения схемы?
Я единственный программист. Некоторым другим псевтехническим сотрудникам нравится вносить изменения непосредственно в SQL Management Studio. Является ли реалистичным ожидать, что другие придерживаются этого решения - как я могу обеспечить это?
Заранее благодарю вас за помощь.
Edit:
К сожалению, мы не сможем использовать TFS. У нас есть Visual Studio 2008/2010 с доступными компонентами проекта базы данных, поэтому, похоже, мне придется взломать решение на основе скриптов. Любые предложения/обновления приветствуются.
«Что касается пользователей, которые делают изменения в ручном пистолете из SSMS: вы можете предотвратить их использование триггеров DDL, вы можете отслеживать их с помощью уведомлений о событиях, или вы можете полностью их проверять с помощью проверки на соответствие требованиям C2». Кроме того, вы можете перезаписать свои изменения тем, что находится в управлении источником. Не займет много времени, пока они не остановятся. Также имейте в виду свои права prod, поэтому любые изменения в prod должны быть развернуты через сценарии деполяции. – HLGEM
Проблема с запуском разницы между нашими/их dbs заключается в том, что несколько клиентов активно добавляют свои собственные хранимые процедуры (а иногда даже и модифицируют наши собственные). Я хотел бы, чтобы мой процесс автоматизации выполнял однократное обновление, после чего я ничего не гарантирую. Похоже, я вынужден оставаться в наборе инструментов MS? Сообщение, на которое я ссылался, казалось, уклонился от этого. Спасибо за вашу помощь. – Alex
Лично я использую версированные схемы и сценарии обновления, как описано в http://rusanu.com/2009/05/15/version-control-and-your-database. В моих продуктах я добавляю сценарии SQL в качестве ресурсов для приложения и запускаю их в соответствии с обновленной картой (т. Е. Запускает * этот * скрипт для обновления с версии с версии 1.3 до версии 1.4, а затем запускает * этот * скрипт для обновления от v1.4 до v1.5, затем * этот * скрипт и т. д., пока вы не дойдете до текущей версии). Я предпочитаю это в проектах VS DB, потому что мне не нравится, как vsdbcmd и другие инструменты на основе diff обрабатывают развертывание новой версии, особенно для больших таблиц. –