Пример. Поэтапное восстановление базы данных (модель полного восстановления)

Применимо к:SQL Server

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

В данном примере база данных adb восстанавливается после сбоя на новом компьютере. Используется полная модель восстановления базы данных, поэтому перед началом восстановления необходимо сделать резервную копию заключительного фрагмента журнала базы данных. До сбоя все файловые группы работали в режиме «в сети». Файловая группа B доступна только для чтения. Необходимо восстановить все вторичные файловые группы, но они восстанавливаются в порядке важности: A (наивысшая), Cи B. В этом примере существует четыре резервные копии журнала, включая резервную копию заключительного фрагмента журнала.

Резервная копия заключительного фрагмента журнала

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

BACKUP LOG adb TO tailLogBackup WITH NORECOVERY, NO_TRUNCATE  

Резервная копия заключительного фрагмента журнала — это последняя резервная копия, используемая в следующих последовательностях восстановления.

Последовательности восстановления

Заметка

Синтаксис последовательности восстановления в сети тот же самый, что и в случае последовательности восстановления вне сети.

  1. Частичное восстановление первичной и вторичной файловой группы A:

    RESTORE DATABASE adb FILEGROUP='Primary' FROM backup1   
       WITH PARTIAL, NORECOVERY  
    RESTORE DATABASE adb FILEGROUP='A' FROM backup2   
       WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup3 WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup4 WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup5 WITH NORECOVERY  
    RESTORE LOG adb FROM tailLogBackup WITH RECOVERY  
    
  2. Восстановление файловой группы C«в сети».

    На этом этапе первичная файловая группа и вторичная файловая группа A находятся в режиме «в сети». Все файлы в файловых группах B и C ожидают восстановления, а сами файловые группы находятся в режиме «вне сети».

    Сообщения от последней инструкции RESTORE LOG в шаге 1 указывают, что откат транзакций, задействовавших файловую группу C , был отложен из-за недоступности этой файловой группы. Нормальная работа может продолжаться, но этими транзакциями удерживаются блокировки, поэтому до завершения отката усечение журнала выполнено не будет.

    Во второй последовательности восстановления администратор базы данных восстанавливает файловую группу C:

    RESTORE DATABASE adb FILEGROUP='C' FROM backup2a WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup3 WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup4 WITH NORECOVERY  
    RESTORE LOG adb FROM log_backup5 WITH NORECOVERY  
    RESTORE LOG adb FROM tailLogBackup WITH RECOVERY  
    

    На этом этапе первичная файловая группа и файловые группы A и C находятся в режиме в сети. Файлы в файловой группе B ожидают восстановления, при этом она находится в режиме «вне сети». Отложенные транзакции разрешены, и выполняется усечение журнала.

  3. Восстановление файловой группы B«в сети».

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

RESTORE DATABASE adb FILEGROUP='B' FROM backup2b WITH RECOVERY  

Теперь все файловые группы находятся в режиме «в сети».

Дополнительные примеры

См. также

BACKUP (Transact-SQL)
Восстановление в сети (SQL Server)
Применение резервных копий журналов транзакций (SQL Server)
RESTORE (Transact-SQL)
Восстановление фрагмента (SQL Server)