Есть несколько вопросов о SO об управлении версиями для SQL и множестве ресурсов в Интернете, но я не могу найти то, что полностью охватывает то, что я пытаюсь сделать.Методология управления версиями SQL
Во-первых, я говорю о методологии здесь. Я знаком с различными приложениями для управления версиями, и я знаком с такими инструментами, как SQL Compare от Red Gate и т. Д., И я знаю, как написать приложение, чтобы автоматически проверять ситуацию в исходной системе управления и из нее. Если есть инструмент, который был бы особенно полезен при создании целой новой методологии или который имел бы полезную и необычную функциональность, тогда отлично, но для задач, упомянутых выше, я уже установлен.
Требования, которые я пытаюсь встретиться является: данные
- схемы базы данных и просмотровых таблицы версионируются
- DML скриптов для исправления данных для больших таблиц версионируются
- Сервера, может быть повышена с версии N до версии N + X, где X не всегда может быть 1
- Код не дублируется в системе управления версиями - например, если я добавлю столбец в таблицу, я не хочу иметь чтобы изменения были как в сценарии создания, так и в скрипте alter IPT
- Система должна поддерживать несколько клиентов, которые находятся в различных версиях для приложения (пытаясь получить их все до в течение 1 или 2-х выпусков, но еще не там)
Некоторые организации держать дополнительные сценарии изменения в их управлении версиями и для получения от версии N до N + 3 вам придется запускать скрипты для N-> N + 1, затем N + 1-> N + 2, затем N + 2-> N + 3. Некоторые из этих сценариев могут повторяться (например, добавляется столбец, но затем он изменяется для изменения типа данных). Мы стараемся избегать такой повторяемости, поскольку некоторые из клиентских БД могут быть очень большими, поэтому эти изменения могут занять больше времени, чем это необходимо.
Некоторые организации просто сохраняют полный скрипт построения базы данных на каждом уровне версии, а затем используют такой инструмент, как SQL Compare, чтобы довести базу данных до одной из этих версий. Проблема здесь в том, что смешивание сценариев DML может быть проблемой. Представьте сценарий, когда я добавляю столбец, используйте DML-скрипт для заполнения указанного столбца, а затем в более поздней версии это имя столбца изменяется.
Возможно, существует гибридное решение? Может быть, я просто прошу слишком много? Однако любые идеи или предложения были бы весьма полезными.
Если модераторы считают, что это было бы более уместно как вики сообщества, пожалуйста, дайте мне знать.
Спасибо!
Не знаю, видели ли вы этот, но я получил несколько разумных ответов: http://stackoverflow.com/questions/2401229/database-structure-and-source-control-best-practice – Paddy
Помогает ли это ? http://msmvps.com/blogs/deborahk/archive/2010/05/02/vs-2010-database-project-an-introduction.aspx Обратите внимание, что в нижней части статьи есть больше ссылок. –
@Paddy - Спасибо за ссылку. У pdc было хорошее решение, которое соответствовало тому, которое мы рассматривали, но задачи создания скриптов передаются в Индию (не мой выбор), а опыт там ограничен, поэтому некоторые из более сложных кода могут быть проблемой. Хотя все еще на столе. –