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

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

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

ms187495.security(ru-ru,SQL.90).gifПримечание безопасности.
Не рекомендуется присоединять или восстанавливать базы данных, полученные из неизвестных или ненадежных источников. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций Transact-SQL или появление ошибок путем изменения схемы или физической структуры базы данных. Перед тем как использовать базу данных, полученную из ненадежного источника, выполните инструкцию DBCC CHECKDB для этой базы данных на непроизводственном сервере, а также изучите исходный код в базе данных, например хранимые процедуры и другой пользовательский код.

Полное восстановление базы данных

Обычно восстановление базы данных до точки сбоя включает следующие основные шаги:

  1. Произведите резервное копирование активного журнала транзакций (также известного как заключительный фрагмент журнала). На этом шаге создается резервная копия заключительного фрагмента журнала. Если активный журнал транзакций недоступен, все транзакции этой части журнала будут потеряны.
    ms187495.note(ru-ru,SQL.90).gifВажно!
    При использовании модели восстановления с неполным протоколированием для создания резервной копии для журнала, содержащего операции с неполным протоколированием, требуется доступ ко всем файлам базы данных. Если файлы данных недоступны, резервное копирование журнала транзакций невозможно. В этом случае необходимо вручную внести все изменения, произошедшие с момента последнего резервного копирования журнала.
    Дополнительные сведения см. в разделе [Резервные копии заключительного фрагмента журнала](ms179314\(v=sql.90\).md).
  2. Восстановить самую последнюю полную резервную копию базы данных без восстановления самой базы данных (RESTORE DATABASE database_name FROM устройство_резервного_копирования WITH NORECOVERY).
  3. Если существуют разностные резервные копии, восстановите самую последнюю из них без восстановления базы данных (RESTORE DATABASE database_name WITH NORECOVERY).
  4. Начиная с первой резервной копии журнала транзакций, созданной после только что восстановленной резервной копии, последовательно восстановите журналы с параметром NORECOVERY.
  5. Восстановите базу данных (RESTORE DATABASE database_name WITH RECOVERY). Этот шаг можно объединить с восстановлением последней резервной копии журнала.
  6. Окончательное восстановление базы данных обычно выполняется до момента времени или до транзакции, помеченной в резервной копии журнала. Однако в модели восстановления с неполным протоколированием, если в резервной копии журнала содержатся изменения с неполным протоколированием, восстановление до момента времени невозможно. Дополнительные сведения см. в разделе Восстановление базы данных на момент времени в пределах резервной копии.

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

База данных восстановлена, и произведен накат. Для сокращения времени наката применена разностная резервная копия базы данных. Цель данной последовательности восстановления — исключить потери результатов работы; последней восстановленной резервной копией является резервная копия заключительного фрагмента журнала.

В инструкции RESTORE применяется следующая основная синтаксическая конструкция:

  1. RESTORE DATABASE база_данных FROM full database backup WITH NORECOVERY;
  2. RESTORE DATABASE база_данных FROM full_differential_backup WITH NORECOVERY;
  3. RESTORE LOG база_данных FROM резервная_копия_журнала WITH NORECOVERY;
    Повторите шаг по восстановлению журнала из резервной копии для каждой резервной копии журнала.
  4. RESTORE DATABASE база_данных WITH RECOVERY;

Пример

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

ms187495.note(ru-ru,SQL.90).gifПримечание.
В примере используется резервная копия базы данных и резервная копия журнала, созданные в подразделе «Использование резервных копий баз данных в полной модели восстановления» раздела Полные резервные копии базы данных.

Пример начинается с инструкции ALTER DATABASE, которая переключает модель восстановления на FULL.

USE master;
--Make sure the database is using the full recovery model.
ALTER DATABASE AdventureWorks SET RECOVERY FULL;
GO
--Create tail-log backup.
BACKUP LOG AdventureWorks 
TO DISK = 'Z:\SQLServerBackups\AdventureWorks.bak''Z:\SQLServerBackups\AdventureWorks.bak' 
   WITH NORECOVERY; GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks 
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak' 
  WITH FILE=1, 
    NORECOVERY;

--Restore the regular log backup (from backup set 2).
RESTORE LOG AdventureWorks 
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak' 
  WITH FILE=2, 
    NORECOVERY;

--Restore the tail-log backup (from backup set 3).
RESTORE LOG AdventureWorks 
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
  WITH FILE=3, 
    NORECOVERY;
GO
--recover the database:
RESTORE DATABASE AdventureWorks WITH RECOVERY;
GO

Восстановление до точки сбоя

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

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

Восстановление резервной копии журнала транзакций

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

Восстановление резервной копии с помощью объектов SMO

Восстановление на момент времени

При использовании полной модели восстановления база данных может быть восстановлена к определенному моменту времени в пределах резервной копии журнала. Этим моментом времени может быть определенная дата и время, помеченная транзакция или номер LSN. Дополнительные сведения см. в разделе Восстановление базы данных на момент времени в пределах резервной копии.

Поддержка резервных копий предыдущих версий SQL Server

В SQL Server 2005 можно восстанавливать резервные копии, созданные в SQL Server версии 7.0, SQL Server 2000 или SQL Server 2005. Однако восстановление резервных копий баз данных master, model и msdb, сделанных в SQL Server 7.0 или SQL Server 2000, в SQL Server 2005 невозможно. Кроме того, резервные копии журналов SQL Server 7.0, содержащие операции создания индексов, не могут быть восстановлены в SQL Server 2000 или SQL Server 2005.

В SQL Server 2005 используется путь по умолчанию, отличный от пути по умолчанию в предыдущих версиях SQL Server. Поэтому, чтобы восстановить из резервной копии базу данных, созданную в месте расположения по умолчанию SQL Server 7.0 или SQL Server 2000, необходимо использовать параметр MOVE. Сведения о новом пути по умолчанию см. в разделе Расположение файлов для экземпляра по умолчанию и именованных экземпляров SQL Server 2005.

ms187495.note(ru-ru,SQL.90).gifПримечание.
Резервные копии, созданные с помощью SQL Server 6.5 или более ранних версий, имеют несовместимый формат и не могут быть восстановлены в SQL Server 2005. Сведения об обновлении базы данных, созданной в SQL Server 6.5 или более ранней версии, до SQL Server 2005, см. в разделе Копирование баз данных с SQL Server 6.5 и более ранних версий.

См. также

Основные понятия

Резервное копирование с использованием модели восстановления с неполным протоколированием
Резервное копирование в полной модели восстановления
Разностные резервные копии баз данных
Полные резервные копии базы данных
Сокращение времени восстановления базы данных из копии
Основные сведения о восстановлении из резервных копий и по журналам в SQL Server
Использование резервных копий журналов транзакций

Другие ресурсы

Работа с последовательностями восстановления для баз данных SQL Server

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

17 июля 2006 г.

Новое содержимое
  • Добавлено примечание о безопасности.