Как лучше всего контролировать версии моих объектов базы данных? Я использую Visual Studio 2005/2008 и SQL server 2005. Я бы предпочел решение, которое можно использовать с SVN.
Как лучше всего управлять версиями хранимых процедур моего SQL-сервера?
Ответы (10)
Как и ваш другой код, добавьте «Проект базы данных» в решение вашего приложения и сохраните там файлы sql, используемые для создания объектов базы данных. Используйте тот же контроль версий для этих файлов кода, что и для приложения.
Посмотрите на инструменты, предлагаемые RedGate. Они специально занимаются случаями резервного копирования / восстановления / сравнения для объектов SQL Server, включая SP. С другой стороны, я не уверен, но я думаю, что Visual Studio позволяет вам проверять sp в репозиторий. Сам не пробовал. Но я могу порекомендовать инструменты RedGate. Они избавили меня от множества неприятностей
Я использую SVN для всей моей системы управления исходным кодом table / sproc / function.
Мне не удалось найти ничего, что отвечало бы моим потребностям, поэтому я написал служебная программа, позволяющая мне выгружать код в красивую структуру каталогов для использования с SVN.
Для заинтересованных теперь исходный код доступен по адресу svn: //finsel.com/public/ VS2005 / GenerateSVNFilesForSQL2005.
Мы используем Subversion, и все, что мы делаем, - это сохраняем код sql в каталоге для нашего проекта Subversion, а затем фиксируем код в репозитории, когда мы будем готовы, и обновляем его из репозитория, прежде чем мы начнем работать над чем-то, что уже там есть.
Настоящая уловка - убедить разработчиков сделать это. Наши базы данных делают это, периодически удаляя все сохраненные процедуры (или другие объекты базы данных), которых нет в Subversion. Проигрывайте что-то один раз, и почти никто не делает этого снова.
Я не знаю готового решения, извините ...
... но не могли бы вы просто небольшой скрипт, который подключается к базе данных и сохраняет все хранимые процедуры на диск в виде текстовых файлов? Затем сценарий добавит все текстовые файлы в репозиторий SVN, выполнив системный вызов svn add.
Тогда вы, вероятно, захотите, чтобы другой скрипт подключился к БД, отбросил все хранимые процедуры и загрузил все хранимые процедуры репозитория с диска. Этот сценарий нужно будет запускать каждый раз, когда вы запускаете "svn up" и получаете новые / измененные хранимые процедуры.
Я не уверен, что это можно сделать с помощью MS SQL, но я вполне уверен, что MySQL это приспособит. Если писать расширения SVN для этого слишком сложно, Capistrano поддерживает сценарии проверки / проверки, IIRC.
Лучший способ - тот, который работает на вас.
Самый простой способ - тот, которого на данный момент не существует.
Мы используем полуавтоматический метод (сценарии в системе управления версиями, небольшое подмножество людей, способных развертывать хранимые процедуры на производственном сервере, изменения схемы должны отражаться в изменениях в базовых файлах, проверенных в файлах) .
Что мы должны сделать, так это реализовать какой-то контроль версий по сравнению с разницей в дампе схемы открытого текста ... но обычно это «работает для нас», хотя в большинстве случаев это действительно ошибка.
Я согласен с тем, что по возможности вы должны использовать проекты баз данных для версии вашей базы данных вместе с исходным кодом приложения.
Однако, если вы работаете в корпоративном сценарии, вам также следует рассмотреть возможность использования инструмента для отслеживания изменений на сервере и версии этих изменений. Тот факт, что проект базы данных существует, не означает, что какой-либо администратор или разработчик не может изменить эти sprocs на сервере.
Мы делаем дампы в открытый текст и храним их в нашей VCS.
Вы могли бы написать сценарий резервного копирования и фиксации, чтобы сделать что-то подобное.
Я использую scriptdb.exe из http://scriptdb.codeplex.com/
И может быть полезно использовать рельсы: http://code.google.com/p/migratordotnet/wiki/GettingStarted
Используйте versaplex для сброса схемы: http://code.google.com/p/versaplex/ а>
Versaplex поставляется со схемой Schemamatic, которая считывает схему базы данных (таблицы, SP и т. Д.), А также данные (данные выгружаются как CSV). Я использую его с SVN и git, и это круто :) Если вам нужна помощь, дайте мне знать, стоит попробовать! http://github.com/eduardok/versaplex