Зависит ли процесс восстановления от схемы? - PullRequest
4 голосов
/ 20 марта 2010

Допустим, у меня есть два экземпляра базы данных:

InstanceA - Production server
InstanceB - Test server  

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

Итак, в любой момент отношение схемы экземпляра выглядит так:

InstanceA - Schema Version 1.5
InstanceB - Schema Version 1.6 (new version being tested)

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

Мой вопрос: как версия схемы влияет на процесс восстановления?

Я знаю, что могу сделать это:

Backup InstanceA - Schema Version 1.5
Restore to InstanceB - Schema Version 1.5

Но можно ли это сделать?

Backup InstanceA - Schema Version 1.5
Restore to InstanceB - Schema Version 1.6 (new version being tested)

Если нет, как будет выглядеть сбой?

Если да, изменится ли тип схемы?

Например, если Schema Version 1.6 отличается от Schema Version 1.5 просто измененным процессом storec, я полагаю, что этот тип изменения схемы не должен влиять на процесс восстановления. С другой стороны, если Schema Version 1.6 отличается от Schema Version 1.5 наличием другого определения таблицы (скажем, дополнительного столбца), я представляю, что это повлияет на восстановительный процесс.

Надеюсь, я прояснил это достаточно.

Заранее спасибо за любой вклад!

Ответы [ 2 ]

8 голосов
/ 20 марта 2010

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

Лучше сначала выполнить восстановление с обновлением данных, а затем применить изменения схемы 1.6.

4 голосов
/ 20 марта 2010

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

То, на что вы действительно должны обратить внимание - это инструменты сравнения схем и данных. Такие вещи, как Redgate, ApexSql Compare, AdeptSQL или Visual Studio Database Edition, все могут отлично справиться с сценарием, который вы описали. Я лично использую версию базы данных VS, потому что мы получаем ее с нашими лицензиями Gold Partner, и нам это нравится. Он делает именно то, что вы ищете, и делает большую работу в этом. Я использовал все остальные в прошлом, и рекомендую любой из них. Большинство из них имеют 30-дневные пробные версии - вам нужно скачать пару и провести тест-драйв в текущем сценарии.

...