Лучший способ создать сценарий отката SQL Server? - PullRequest
6 голосов
/ 30 декабря 2008

Я работаю над некоторыми изменениями схемы в существующей базе данных.

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

Есть ли лучшая практика для создания сценария отката, если возникает проблема развертывания? До того, как я написал, вручную, используя следующий шаблон:

  • Отбросить новые ограничения и индексы
  • Изменить таблицы для удаления новых столбцов
  • Удалить добавленные таблицы
  • Подтвердить транзакцию

Есть ли лучший подход?

Ответы [ 5 ]

6 голосов
/ 30 декабря 2008

Вы пропустили пятый шаг

  • Отбросить новые ограничения и индексы
  • Изменить таблицы для удаления новых столбцов
  • Удалить добавленные таблицы
  • Подтвердить транзакцию
  • Проверьте адский сценарий перед его запуском в производство

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

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

4 голосов
/ 30 декабря 2008

Вот и все, я не думаю, что есть что добавить, кроме вашего подхода. Это то, как мы делаем это в нашей компании, мы, разработчики, несем ответственность за создание сценария и сценария отката, и мы несем ответственность за то, чтобы оставить БД в том же состоянии, в каком оно было до применения начальных изменений. Затем администраторы баз данных запускают его в производственном режиме, если возникает проблема, они запускают сценарий отката, и все возвращается к нормальной работе. Просто помните о зависимостях и порядке, в котором вы изменяете свои объекты, а затем создаете сценарий отката назад.

1 голос
/ 30 декабря 2008

Если вы используете такой инструмент, как SQL Compare в Redgate, вы можете выполнить сравнение двух баз данных в обоих направлениях и использовать оба для создания необходимых сценариев. скрипт dev to prod будет содержать изменения, которые вы вносите, а скрипт prd to dev вернется в исходное состояние рабочей базы данных. Это гарантирует, что вы ничего не забудете ни в одном из сценариев.

1 голос
/ 30 декабря 2008

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

Как только данные появятся и будут введены новые данные, вы все равно не сможете их откатить. Вы просто должны решить проблемы.

0 голосов
/ 30 декабря 2008

В SQL Server 2005 или новее вы также можете создать моментальный снимок базы данных, который позволит вам в любой момент вернуться в это состояние. Смотрите эту страницу для получения дополнительной информации:

http://msdn.microsoft.com/en-us/library/ms175158.aspx

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