Создание сценариев базы данных для управления версиями базы данных SQL Server - PullRequest
2 голосов
/ 25 января 2012

В области ответственного программирования и управления версиями я хотел бы начать вносить изменения в свою базу данных, тем более что я занимаюсь разработкой своего экземпляра базы данных, а затем перенесу его в производство. Я не нашел ничего, что действительно имеет смысл для меня, как это сделать. Я использую Visual Studio 2010 Pro в качестве моей IDE. Есть ли документ, который делает этот процесс простым и способным сравнительно легко обнаруживать изменения в базе данных? Или что я должен изменить в своем рабочем процессе, чтобы сделать это проще?

Ответы [ 3 ]

6 голосов
/ 25 января 2012

Один способ, которым я успешно делал подобные вещи в прошлом, - это Sql Source Control . Visual Studio не предлагает эту функциональность для вас.

Кроме того, вы можете использовать SSMS для генерации сценариев базы данных для вас и сохранить его в виде файла; тогда вы можете проверить в сценарии. Вы бы выбрали, генерируете ли вы весь сценарий БД в одном файле или делаете это для каждого объекта отдельно. Часть синхронизации должна быть выполнена вами, выполняя ваши сценарии в работе. В заключение всего кошмара .

Redgate также предлагает Sql Compare, который отлично подходит для синхронизации баз данных. Посмотрите на их продукты, если вы или ваша компания можете себе их позволить.

1 голос
/ 25 января 2012

Мы используем собственное решение для БД, которое предоставляет все инструменты, необходимые для правильного управления версиями БД.Хотя я понимаю, что это не может быть идеальным решением для всех, я приглашаю вас взглянуть на него (он с открытым исходным кодом): bsn ModuleStore

Аспект управления версиями таков:Следующее: инструмент может полуавтоматически писать сценарии SQL и переформатирует исходный код в единый формат.Поэтому файлы всегда будут идентичны для одного и того же источника, независимо от того, когда и кем что-то было написано;поэтому это прекрасно работает с неблокирующими системами контроля версий (особенно SVN, Git или Mercurial).

Переформатирование переводит все операторы в одну форму (например, необязательные ключевые слова, такие как AS, INNER, OUTER и т. Д.), Записывает все в схему "dbo" (даже если она в другой), помещает все идентификаторы в квадратные скобки ([something]), ставит все зарезервированные слова в верхний регистр, делает отступ и т.д..

Помимо управления версиями, часть времени выполнения инструмента может различать работающую БД и сценарии CREATE (исходный код БД) и автоматически применять обновления для всех неразрушающих изменений (например, обновление индексов, ограничений, представлений, сохраненных данных).процедуры, триггеры, пользовательские типы, новые таблицы и т. д.).Разрушающие изменения должны быть записаны вручную (изменения таблицы, которые обычно требуют преобразования данных).Среда выполнения гарантирует, что все обновления выполняются в транзакции и откате, если получающаяся БД не соответствует сценариям CREATE, поэтому вы можете быть уверены, что БД точно соответствует версии, требуемой приложением, даже если онабыл изменен вручную.

Кроме того, несколько «модулей» могут быть использованы в одной базе данных.Каждый модуль хранится в виде схемы и не зависит от других схем, что позволяет добавлять или удалять модули из одной БД и избегать необходимости создания нескольких баз данных для разных частей приложения.Кроме того, использование схем для этого гарантирует отсутствие конфликтов имен.

Возможно, стоит отметить, что набор инструментов не зависит от SMO, он автономен.

0 голосов
/ 25 января 2012

Сохраните ваши скрипты базы данных в SVN. Вот ссылка Как использовать черепаху SVN

OR

Сохраните скрипт вашей базы данных на VSS. Вот ссылка Что такое VSS? Как мы можем это использовать?

В обоих случаях вы можете отслеживать сделанные изменения, чтобы в будущем вы могли проверить историю, сохраненную в виде версий.

Вы можете использовать продукт Red Gate также

EDIT

Как вы вытащить то, что изменилось?

Используйте функцию сравнения, чтобы проверить изменения, сделанные в предыдущих версиях.

Как применить изменения к работающему серверу базы данных?

Загрузите последний файл с сервера.

Я надеюсь, что вы не используете операторы отбрасывания для таблицы в консолидированном скрипте. Так как будут удалены все записи из таблицы.

Операторы отбрасывания будут выполняться для Stored Pro, View, Function и т. Д.

Обратите внимание, что вы должны запустить полный файл сценария базы данных на производственном сервере с указанными ниже планами действий

1. Remove Drop Statement for Schema DDL
2. Add Drop/Create Statements for Stored Proc/Views
3. Include Alter statements DML of schema.

Надеюсь, это вам обязательно поможет.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...