Существует более одной файловой системы
Большинство средств контроля версий работают с файловой системой локального диска.
Объекты базы данных для большинства систем реляционных баз данных существуют в файловой системе, поскольку существует текстовое имя, идентифицирующее объект, и сценарий создания может быть извлечен или, по крайней мере, сгенерирован с использованием этого имени.
Но это не файловая система локального диска, и в результате они невидимы для таких инструментов, как CVS или SVN, которые работают только с файловой системой локального диска.
Чтобы SVN можно было применить к объектам базы данных, они должны быть реплицированы в файловую систему локального диска, а изменения в файловой системе локального диска должны быть реплицированы в базу данных.
Другой режим использования
В отличие от исходного кода, частную рабочую копию которого имеет каждый разработчик, разработчики, как правило, работают с общей базой данных на сервере где-то в сети. Хотя Visual Studio обеспечивает прямую поддержку локальных копий базы данных, подключаемых по запросу, разработчики отказались от этой возможности, поскольку не существует удобного и надежного способа объединения изменений.
Однако, как только изменения в структуре базы данных будут управляться системой контроля версий с копированием и слиянием, такой как CVS или SVN, распространение и слияние будут в основном автоматическими (конфликты исключений), и больше не будет никаких причин для совместного использования базы данных.
Исключение SCC как вариант
Microsoft SQL Management Studio поддерживает управление версиями для всего, что реализует спецификацию SCC. Microsoft перечисляет только VSS (blech), но Google показывает множество вариантов. Однако SCC — это все о блокировке — двойная чепуха.
Репликация между файловыми системами
Весь вопрос теперь сводится к репликации между файловыми системами. CodePlex содержит реализацию для VS2005/SQL2005, но не работает с VS2008/SQL2008.
На данный момент я думаю, что основополагающий вопрос «как мне это сделать» удовлетворительно решен, хотя я не уверен, как начислять баллы.
Спасибо всем заинтересованным за ваш вклад.
Возникают некоторые конкретные вопросы, в основном связанные со сценарием различных типов объектов схемы.
- How to extract
create
andalter
scripts in dependency order for- table
- Посмотреть
- хранимая процедура
- функция
- курок
- показатель
- иностранный ключ
- Как извлечь сценарии заполнения таблицы в порядке зависимости
- Как оперативно обнаруживать изменения в схеме (при отсутствии триггеров на
sys.objects
нужно будет опрашивать, лучше быстро и дешево)
Обнаружение изменений
Мне стало известно, что с помощью политик можно привязать действия к изменениям схемы. Остаются вопросы упорядочения зависимостей и того, как написать оператор создания таблицы.