Как откатить развертывание базы данных без потери новых данных? - PullRequest
0 голосов
/ 11 мая 2010

Моя компания использует виртуальные машины для наших веб-серверов / серверов приложений. Это позволяет очень легко откатить развертывание, если что-то пойдет не так. Однако, если развертывание сервера приложений также требует развертывания базы данных, и мы должны откатиться, я в некотором роде в растерянности. Как можно откатить изменения схемы базы данных без потери данных? Единственное, о чем я могу думать, - это написать скрипт, который будет отбрасывать / возвращать таблицы / столбцы обратно в исходное состояние. Это действительно лучший способ?

Ответы [ 2 ]

2 голосов
/ 11 мая 2010

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

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

1 голос
/ 11 мая 2010

Вообще говоря, вы не можете этого сделать.

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

Один из способов справиться с этим будет:

  • резервное копирование только данных (скрипт),
  • вернуть схему к старой и
  • восстановить данные

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

Этот вопрос содержит подробности об инструментах, доступных в MS SQL для генерации сценариев.

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