Восстановление файлов (модель полного восстановления)

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

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

Цель восстановления файлов — восстановить один или несколько поврежденных файлов, не восстанавливая всю базу данных. Сценарий восстановления файлов состоит из одной последовательности восстановления, которая копирует данные, выполняет накат и восстанавливает соответствующие данные.

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

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

Существуют следующие сценарии восстановления файлов.

  • Восстановление файлов в режиме «вне сети»

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

    Все выпуски SQL Server поддерживают автономное восстановление файлов.

  • Восстановление файлов в сети

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

    Сведения о поддержке восстановления страниц в Интернете и файлах см. в выпусках и поддерживаемых функциях SQL Server 2022. Дополнительные сведения об оперативном восстановлении см. в статье Восстановление в сети (SQL Server).

    Совет

    Если желательно, чтобы база данных находилась в режиме "вне сети" при восстановлении файлов, переведите ее в режим "вне сети" перед запуском последовательности восстановления, выполнив следующую инструкцию ALTER DATABASE : ALTER DATABASE имя_базы_данных SET OFFLINE.

Восстановление поврежденных файлов из резервных копий файлов

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

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

    Сведения о резервном копировании журнала транзакций см. в статье "Резервные копии журналов транзакций" (SQL Server).

    Важно!

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

  2. Восстановите каждый поврежденный файл из самой последней резервной копии этого файла.

  3. Восстановите самую последнюю разностную резервную копию файлов, если она существует, для каждого восстановленного файла.

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

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

  5. Восстановите базу данных по журналам транзакций.

Примечание.

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

Последовательность восстановления Transact-SQL для восстановления файлов вне сети (модель полного восстановления)

Сценарий восстановления файлов состоит из одной последовательности восстановления, которая копирует данные, выполняет накат и восстанавливает соответствующие данные.

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

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

Примечание.

Следующая простая последовательность восстановления начинается с перевода файла в состояние «вне сети», после чего создается резервная копия заключительного фрагмента журнала.

--Take the file offline.  
ALTER DATABASE database_name MODIFY FILE SET OFFLINE;  
-- Back up the currently active transaction log.  
BACKUP LOG database_name  
   TO <tail_log_backup>  
   WITH NORECOVERY;  
GO   
-- Restore the files.  
RESTORE DATABASE database_name FILE=name   
   FROM <file_backup_of_file_A>   
   WITH NORECOVERY;  
RESTORE DATABASE database_name FILE=<name> ......  
   FROM <file_backup_of_file_B>   
   WITH NORECOVERY;  
-- Restore the log backups.  
RESTORE LOG database_name FROM <log_backup>   
   WITH NORECOVERY;  
RESTORE LOG database_name FROM <log_backup>   
   WITH NORECOVERY;  
RESTORE LOG database_name FROM <tail_log_backup>   
   WITH RECOVERY;  

Примеры

Связанные задачи

Восстановление файлов и файловых групп

См. также

Резервное копирование и восстановление: взаимодействие и сосуществование (SQL Server)
Разностные резервные копии (SQL Server)
Полные резервные копии файлов (SQL Server)
Общие сведения о резервном копировании (SQL Server)
Обзор процессов восстановления (SQL Server)
RESTORE (Transact-SQL)
Полное восстановление базы данных (простая модель восстановления)
Восстановление фрагмента (SQL Server)