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

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

  • Восстановить с помощью Recovery
  • Восстановить без восстановления
  • Восстановить в режиме ожидания

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

(Желательно в условиях непрофессионала)

Ответов (3)

Решение

GateKiller,

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

ВОССТАНОВЛЕНИЕ С ВОССТАНОВЛЕНИЕМ использует файл носителя резервной копии (например, fulldata.bak) для восстановления базы данных до того времени, когда был создан файл резервной копии. Это замечательно, если вы хотите вернуться в прошлое, чтобы восстановить базу данных до более раннего состояния - например, при разработке системы.

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

ВОССТАНОВЛЕНИЕ В РЕЖИМЕ ОЖИДАНИЯ - это возможность восстановить базу данных до четной даты (например, NORECOVERY выше), но разрешить использование базы данных ТОЛЬКО ДЛЯ ЧТЕНИЯ. Новые журналы транзакций по-прежнему можно применять к базе данных, чтобы поддерживать ее в актуальном состоянии (резервный сервер). Используйте это, когда восстановление полной базы данных для возврата к работе системы занимает слишком много времени. (например, если у вас есть база данных с несколькими ТБ, восстановление которой займет 16 часов, но может получать обновления журнала транзакций каждые 15 минут).

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

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

ВОССТАНОВЛЕНИЕ - это нормальное и обычное состояние базы данных, в котором пользователи могут подключаться и получать доступ к базе данных (при условии, что у них есть соответствующие разрешения).

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

STANDBY во многом аналогичен статусу NORECOVERY, однако он позволяет пользователям подключаться или получать доступ к базе данных в режиме ТОЛЬКО ДЛЯ ЧТЕНИЯ. Таким образом, пользователи могут запускать только команду SELECT для базы данных. Это часто используется в Log Shipping для отчетности. Единственный недостаток заключается в том, что пока в базе данных есть пользователи, выполняющие запросы, SQL Server или администратор базы данных не может восстановить дополнительные файлы резервных копий. Поэтому, если у вас есть много пользователей, постоянно обращающихся к базе данных, репликация может отставать.

Из книг в Интернете, я думаю, это довольно ясно после того, как вы их прочитаете.

NORECOVERY

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

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

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

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

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

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

ВОССТАНОВЛЕНИЕ

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

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

Если ни NORECOVERY, RECOVERY, ни STANDBY не указаны, по умолчанию используется RECOVERY. При восстановлении наборов резервных копий из более ранней версии SQL Server может потребоваться обновление базы данных. Это обновление выполняется автоматически, если указано С ВОССТАНОВЛЕНИЕМ. Для получения дополнительной информации см. Резервное копирование журнала транзакций.

STANDBY = undo_file_name

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

STANDBY allows a database to be brought up for read-only access between transaction log restores and can be used with either warm standby server situations or special recovery situations in which it is useful to inspect the database between log restores.

If the specified undo file name does not exist, SQL Server creates it. If the file does exist, SQL Server overwrites it.

The same undo file can be used for consecutive restores of the same database. For more information, see Using Standby Servers.

Important If free disk space is exhausted on the drive containing the specified undo file name, the restore operation stops.

STANDBY is not allowed when a database upgrade is necessary.