Перенос изменений из базы данных разработчиков в производственную базу данных

StackOverflow https://stackoverflow.com/questions/1082339

Вопрос

Допустим, у меня есть веб-сайт и база данных этого веб-сайта, размещенная локально на моем компьютере (для разработки), и другая база данных, размещенная (для производства)...т. е. сначала я вношу изменения в базу данных разработчиков, а затем я вношу изменения в базу данных prod.

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

Если это имеет значение, я использую MS Sql Server (2008)

Это было полезно?

Решение

Правильный способ сделать это с помощью Visual Studio и SQL Server - добавить Проект базы данных к решению для веб-приложений.Проект базы данных должен содержать файлы SQL, которые могут полностью воссоздать всю базу данных на новом сервере вместе со всеми необходимыми таблицами, процедурами, пользователями и ролями.

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

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

SQL в файлах должен быть записан с соответствующими блоками "если существует", чтобы его можно было безопасно запускать несколько раз в уже обновленной базе данных без ошибок.

Как правило, вы никогда не должны вносить свои изменения непосредственно в базу данных - вместо этого измените SQL-скрипт в проекте и примените его к базе данных, чтобы убедиться, что ваш исходный код (файлы SQL) всегда актуален.

Другие советы

Мы делаем это в мире Rails (Ruby on), создавая "миграции", которые фиксируют изменения, которые вы вносите в структуру базы данных в каждой точке.Они запускаются с помощью инструмента миграции (задача для rake), который также выполняет запись в таблицу базы данных, чтобы знать, была ли запущена конкретная миграция или нет.

Вы могли бы создать подобную структуру для своей платформы разработки (.Net?), Но я думаю, что в других ответах на этот вопрос люди предложат доступные инструменты для управления версиями базы данных на вашей платформе разработки или, возможно, для вашей конкретной БД.

Я не знаю ничего из этого, но ознакомьтесь с этим списком.Я вижу там много платных вещей, но должно же быть что-то бесплатное.Также зацени это.

Я переношу изменения с помощью сценариев изменений, написанных разработчиками, когда они протестировали / подтвердили свои изменения.(Исключением является перемещение больших данных.) Все сценарии хранятся в системе управления версиями.и может быть проверен администраторами баз данных.

Это ручной, иногда трудоемкий, но эффективный, безопасный и контролируемый процесс.

Базы данных слишком важны, чтобы копировать их из dev.

Существуют инструменты, помогающие создавать / проверять эти скрипты.Видишь http://www.red-gate.com/ Я использовал их инструменты для сравнения двух баз данных для создания скриптов.Брайан

Если изменения небольшие, я иногда вношу их вручную.Для более масштабных изменений я использую Красные ВоротаСравнение SQL для генерации сценариев изменения.Они проверяются вручную и сначала запускаются в среде контроля качества, чтобы убедиться, что они ничего не нарушают.Для крупных изменений мы запускаем специальную резервную копию перед внесением изменений как в QA, так и в production.

Раньше мы использовали подход, предложенный Роном.Это имеет смысл для большого проекта с выделенной командой администраторов баз данных.Но если у вас нет выделенных разработчиков, которые пишут код только для DB, это подход требует больших затрат времени и ресурсов.

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

Ему нужно что-то получше.Это было причиной, по которой мы построили "Инструмент для восстановления / импорта / реверсирования / экспорта Agile DB" Инструмент является бесплатным.

Преимущества:ваши разработчики используют любые предпочтительные инструменты для разработки DEV DB.Затем они запускают файл DB RIRE, и он производит обратное обновление базы данных (таблиц, представлений, stor proc и т.д.) и экспортирует данные в XML-файлы.XML-файлы вы можете хранить в любой системе репозитория кода.

И второй шаг - запустить DB RIRE еще раз, чтобы сгенерировать сценарии различий между структурой и данными в XML-файлах и в рабочей базе данных.

Конечно, вы можете сделать столько итераций, сколько вам нужно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top