Состояния восстановления SQL Server

При восстановлении базы данных SQL Server я заметил, что есть 3 различных состояния восстановления на выбор:

  • Восстановление с восстановлением
  • Восстановление без восстановления
  • Восстановление с резервным копированием

Я всегда оставлял значение по умолчанию, но что все они означают?

(Желательно в простых терминах)

Решение

GateKiller,

В простых терминах (а не копи-паст из SQLBOL), чтобы вы могли понять концепции:

RESTORE WITH RECOVERY использует файл носителя резервной копии (например, fulldata.bak) для восстановления базы данных к моменту создания файла резервной копии. Это очень удобно, если вы хотите вернуться назад во времени и восстановить базу данных в более раннее состояние - например, при разработке системы.

Если вы хотите восстановить базу данных до ОЧЕНЬ ПОСЛЕДНИХ ДАННЫХ (т.е., например, если вы делаете аварийное восстановление системы и не можете потерять данные), то вам нужно восстановить резервную копию и затем все журналы транзакций, созданные с момента создания резервной копии. В этом случае используется RESTORE NORECOVERY. Это позволит вам восстановить последующие журналы транзакций вплоть до точки отказа (если они у вас есть).

RECOVERY WITH STANDBY - это возможность восстановить базу данных до определенной даты (как и NORECOVERY выше), но при этом позволить использовать базу данных в режиме READONLY. Новые журналы транзакций могут быть применены к базе данных для поддержания ее в актуальном состоянии (резервный сервер). Используйте это, когда восстановление полной базы данных займет слишком много времени, чтобы вернуть систему к работе. (т.е. если у вас есть база данных размером несколько ТБ, восстановление которой займет 16 часов, но вы сможете получать обновления журнала транзакций каждые 15 минут).

Это немного похоже на зеркальный сервер - но без необходимости "каждой отдельной транзакции", отправляемой на резервный сервер в реальном времени.

Комментарии (0)

Вы можете установить базу данных Microsoft SQL Server в режим NORECOVERY, RECOVERY или STANDBY.

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

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

STANDBY - это практически то же самое, что и состояние NORECOVERY, однако оно позволяет пользователям подключаться или получать доступ к базе данных в режиме READONLY. Таким образом, пользователи могут выполнять только команду SELECT для базы данных. Это довольно часто используется в Log Shipping для создания отчетов. Единственным недостатком является то, что пока в базе данных есть пользователи, выполняющие запросы, SQL Server или DBA не может восстановить дополнительные файлы резервных копий. Поэтому если у вас много пользователей, постоянно обращающихся к базе данных, то репликация может отставать.

Комментарии (0)

Из книги "Books On line", я думаю, что после ее прочтения все становится ясно.

НОРЭКОВЕРИ

Указывает операции восстановления не откатывать незафиксированные транзакции. Опция NORECOVERY или STANDBY должна быть указана, если необходимо применить другой журнал транзакций. Если не указаны ни NORECOVERY, ни RECOVERY, ни STANDBY, по умолчанию используется RECOVERY.

SQL Server требует, чтобы опция WITH NORECOVERY использовалась во всех операторах RESTORE, кроме последнего, при восстановлении резервной копии базы данных и нескольких журналов транзакций, или когда требуется несколько операторов RESTORE (например, полная резервная копия базы данных, за которой следует дифференциальная резервная копия базы данных).

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

При использовании с операцией восстановления файла или файловой группы NORECOVERY заставляет базу данных оставаться в состоянии восстановления после операции восстановления. Это полезно в любой из этих ситуаций:

Выполняется сценарий восстановления, и журнал всегда применяется.

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

RECOVERY.

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

Если планируются последующие операции RESTORE (RESTORE LOG или RESTORE DATABASE from differential), вместо них следует указать NORECOVERY или STANDBY.

Если не указано ни NORECOVERY, ни RECOVERY, ни STANDBY, по умолчанию используется RECOVERY. При восстановлении наборов резервных копий из более ранней версии SQL Server может потребоваться обновление базы данных. Это обновление выполняется автоматически, если указано WITH RECOVERY. Дополнительные сведения см. в разделе Резервные копии журнала транзакций .

STANDBY = undo_file_name

Указывает имя файла отмены, чтобы эффекты восстановления можно было отменить. Размер, необходимый для файла отмены, зависит от объема действий отмены, возникающих в результате незафиксированных транзакций. Если не указано ни NORECOVERY, ни RECOVERY, ни STANDBY, по умолчанию используется RECOVERY.

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

Если указанное имя файла отмены не существует, SQL Server создает его. Если файл существует, SQL Server перезаписывает его.

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

Важно Если на диске, содержащем указанное имя файла отмены, закончилось свободное дисковое пространство, операция восстановления прекращается.

STANDBY не допускается, если необходимо обновление базы данных.

Комментарии (0)