MSSQL заменяет базу данных в Live Web App

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

Мой экземпляр dev SQL не является живым. Обычно я просто делаю резервную копию новой БД, удаляю старую и восстанавливаю обновленную. Но теперь у меня есть данные, которые мне нужно сохранить.

Большинство текущих таблиц изменились: добавлены дополнительные столбцы, все существующие столбцы все еще там и не изменились.

У меня есть доступ к Management Studio.

Как правильно это сделать?

1 ответ

Решение

"Правильный способ" сделать это - рассматривать любые изменения в вашей базе данных во время разработки как временные и составлять список сценариев построения базы данных, чтобы вы могли перестроить новую схему в производственной базе данных. Любые сделанные вами изменения должны быть сохранены в сценарии обновления SQL, привязанном к версии базы данных (1.0, 1.1, 1.2...) или, что еще лучше, помещены в хранилище исходного кода для контроля версий вместе с вашим программным кодом. Если вы хотите обновить производственную базу данных, вы должны запустить последовательность сценариев обновления, чтобы обновить базу данных до последней версии.

Иногда вы можете сгенерировать сценарии изменений после работы с вашей базой данных dev в Management Studio, щелкнув правой кнопкой мыши таблицу или хранимую процедуру и выбрав "Script To". Это сгенерирует оператор alter или create, который можно использовать для создания ваших скриптов обновления. После завершения всех сценариев обновления скопируйте производственную базу данных в свой комплект разработчика и протестируйте обновление, чтобы убедиться, что все работает. Затем, когда вы будете готовы обновить работающую систему, создайте резервную копию и запустите сценарии на рабочем сервере.

Альтернативой является создание пустой базы данных с правильной схемой, а затем копирование всех данных в пустую базу данных. Для сложной схемы это обычно трудно сделать, и процесс может потребовать значительного времени простоя, поскольку использование сценариев обновления часто может быть выполнено с минимальным временем простоя.

Для получения дополнительной информации см. Этот вопрос об управлении версиями базы данных и обновлениями.

Другие вопросы по тегам