Каков наилучший способ контроля версий объектов моей базы данных? Я использую Visual Studio 2005/2008 и SQL Server 2005. Я бы предпочел решение, которое можно использовать с SVN.
Каков наилучший способ контроля версий моих хранимых процедур SQL-сервера?
Ответ 1
То же, что и ваш другой код, добавьте "проект базы данных" в ваше приложение и сохраните файлы sql, используемые для создания объектов базы данных. Используйте тот же элемент управления версиями для этих файлов кода, что и для приложения.
Ответ 2
Посмотрите на инструменты, предлагаемые RedGate. В них конкретно рассматриваются случаи резервного копирования/восстановления/сравнения для объектов SQL Server, включая SP. В качестве альтернативы я не уверен, но я думаю, что Visual Studio позволяет вам проверять sp в репозитории. Хавент сам это пробовал. Но я могу порекомендовать инструменты RedGate. Они спасли мне массу проблем.
Ответ 3
Я использую SVN для всех элементов управления исходным кодом /sproc/function.
Я не мог найти ничего, что отвечало моим потребностям, поэтому я написал утилиту, чтобы позволить мне сбрасывать код в хорошая структура каталогов для использования с SVN.
Для интересующихся источник теперь доступен в svn://finsel.com/public/VS2005/GenerateSVNFilesForSQL2005.
Ответ 4
Мы используем Subversion, и все, что мы делаем, это сохранить код sql в каталоге для нашего проекта subversion, а затем передать код в репозиторий, когда мы будем готовы и обновить из репозитория, прежде чем мы начнем работать над чем-то уже там.
Настоящий трюк - убедить разработчиков сделать это. Наши dbas делают это, удаляя любой сохраненный proc (или другой объект базы данных), который не находится в Subversion периодически. Потеряйте вещи один раз и в значительной степени никто не делает это снова.
Ответ 5
Я не знаю предварительно упакованного решения, извините...
... но вы не могли бы просто немного script подключиться к базе данных и сохранить все хранимые процедуры на диск в виде текстовых файлов? Затем script добавит все текстовые файлы в репозиторий SVN, сделав системный вызов 'svn add'.
Тогда вам, возможно, понадобится еще один script для подключения к БД, отбросить все хранимые процедуры и загрузить все хранимые процедуры хранилища с диска. Этот script должен запускаться каждый раз, когда вы запускаете "svn up" и имеете новые/измененные хранимые процедуры.
Я не уверен, что это может быть достигнуто с помощью MS SQL, но я уверен, что MySQL это применит. Если писать SVN-расширения для этого слишком сложно, Capistrano поддерживает скрипты checkin/checkout, IIRC.
Ответ 6
Лучший способ - тот, который работает на вас.
Самый простой способ - тот, который в настоящее время не существует.
Мы используем полуавтоматический метод (скрипты под контролем источника, небольшое подмножество людей, способных развертывать хранимые процедуры на рабочем сервере, изменения в схеме должны отражаться в изменениях в базовом файле, проверенных в файлах).
Что мы должны делать, это реализовать какой-то контроль источника и шаблон dump diff..., но он вообще "работает для нас", хотя он действительно сильно ударяет большую часть времени.
Ответ 7
Я согласен с тем, что, если это возможно, вы должны использовать проекты базы данных для версии db вместе с вашим источником приложения.
Однако, если вы находитесь в корпоративном сценарии, вы также должны рассмотреть возможность использования инструмента для отслеживания изменений на сервере и изменения этих изменений. Просто потому, что проект базы данных существует, не означает, что какой-либо администратор или разработчик не могут изменить эти sprocs на сервере.
Ответ 8
Мы делаем дампы для открытого текста и сохраняем их в нашей VCS.
Вы можете script выполнить резервное копирование и-commit, чтобы сделать что-то подобное.
Ответ 9
Я использую scriptdb.exe из http://scriptdb.codeplex.com/
И может быть полезно использовать путь рельсов: http://code.google.com/p/migratordotnet/wiki/GettingStarted
Ответ 10
Используйте versaplex для сброса вашей схемы: http://code.google.com/p/versaplex/
Versaplex поставляется с Schemamatic, который считывает схему базы данных (таблицы, SP и т.д.), а также данные (данные сбрасываются как CSV). Я использую его, с SVN и git, и это потрясающе:) Если вам нужна помощь, дайте мне знать, стоит попробовать! http://github.com/eduardok/versaplex