Выполнение полного восстановления базы данных (модель полного восстановления)
Задача полного восстановления — восстановить базу данных целиком. В период восстановления база данных недоступна. Прежде чем какая-либо часть базы данных станет доступна, все данные восстанавливаются до точки согласования, в которой все части базы данных находятся в одном и том же моменте времени и в которой нет незафиксированных транзакций.
При использовании модели полного восстановления база данных может быть восстановлена к определенному моменту времени. Этот момент времени может соответствовать самой последней доступной резервной копии, конкретному значению даты и времени или помеченной транзакции.
Примечание по безопасности |
---|
Не рекомендуется присоединять или восстанавливать базы данных, полученные из неизвестных или ненадежных источников. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций Transact-SQL или появление ошибок путем изменения схемы или физической структуры базы данных. Перед тем как использовать базу данных, полученную из ненадежного источника, выполните инструкцию DBCC CHECKDB для этой базы данных на тестовом сервере, а также изучите исходный код в базе данных, например хранимые процедуры и другой пользовательский код. |
Полное восстановление базы данных
Обычно восстановление базы данных до точки сбоя включает следующие основные шаги:
Произведите резервное копирование активного журнала транзакций (также известного как заключительный фрагмент журнала). На этом шаге создается резервная копия заключительного фрагмента журнала. Если активный журнал транзакций недоступен, все транзакции этой части журнала будут потеряны.
Важно! При использовании модели восстановления с неполным протоколированием для создания резервной копии для журнала, содержащего операции с неполным протоколированием, требуется доступ ко всем файлам базы данных. Если файлы данных недоступны, резервное копирование журнала транзакций невозможно. В этом случае необходимо вручную внести все изменения, произошедшие с момента последнего резервного копирования журнала.
Дополнительные сведения см. в разделе Резервные копии заключительного фрагмента журнала.
Восстановите самую последнюю полную резервную копию базы данных без восстановления самой базы данных (RESTORE DATABASE database_name WITH NORECOVERY).
Если существуют разностные резервные копии, восстановите самую последнюю из них без восстановления базы данных (RESTORE DATABASE database_name FROM differential_backup_device WITH NORECOVERY).
Начиная с первой резервной копии журнала транзакций, созданной после только что восстановленной резервной копии, последовательно восстановите журналы с параметром NORECOVERY.
Восстановите базу данных (RESTORE DATABASE database_name WITH RECOVERY). Этот шаг можно объединить с восстановлением последней резервной копии журнала.
Окончательное восстановление базы данных обычно выполняется до момента времени или до транзакции, помеченной в резервной копии журнала. Однако в модели восстановления с неполным протоколированием, если в резервной копии журнала содержатся изменения с неполным протоколированием, восстановление до момента времени невозможно. Дополнительные сведения см. в разделе Восстановление базы данных на момент времени в пределах резервной копии.
На следующем рисунке показан этот процесс. После сбоя (1) создается резервная копия заключительного фрагмента журнала (2). Затем база данных восстанавливается до точки сбоя. Это включает восстановление резервной копии базы данных, последующей разностной резервной копии и всех резервных копий журналов, сохраненных после разностной резервной копии, в том числе резервной копии заключительного фрагмента журнала.
При выполнении полного восстановления базы данных должна использоваться одна последовательность восстановления. Следующий пример иллюстрирует важнейшие параметры последовательности восстановления, используемой в процессе полного восстановления базы данных, когда база данных восстанавливается до точки сбоя. Последовательность восстановления состоит из одной или нескольких операций, которые выполняют перемещение данных между одним или несколькими этапами восстановления. Синтаксис и прочие подробности, несущественные для данной цели, опущены.
База данных восстановлена, и произведен накат. Для сокращения времени наката применена разностная резервная копия базы данных. Цель данной последовательности восстановления — исключить потери результатов работы; последней восстановленной резервной копией является резервная копия заключительного фрагмента журнала.
В инструкции RESTORE применяется следующая основная синтаксическая конструкция:
RESTORE DATABASE база_данных FROM full database backup WITH NORECOVERY;
RESTORE DATABASE база_данных FROM full_differential_backup WITH NORECOVERY;
RESTORE LOG база_данных FROM резервная_копия_журнала WITH NORECOVERY;
Повторите шаг по восстановлению журнала из резервной копии для каждой резервной копии журнала.
RESTORE DATABASE база_данных WITH RECOVERY;
Пример
В этом примере база данных AdventureWorks была переключена в модель полного восстановления до создания резервной копии базы данных. На этом шаге создается резервная копия заключительного фрагмента журнала базы данных AdventureWorks. Далее в примере восстанавливается более ранняя полная резервная копия базы данных и резервная копия журнала, а затем восстанавливается заключительный фрагмент журнала. В этом примере показан отдельный последний шаг восстановления базы данных.
Примечание |
---|
В примере используется резервная копия базы данных и резервная копия журнала, созданные в подразделе «Использование резервных копий баз данных в модели полного восстановления» раздела Полные резервные копии базы данных. |
Пример начинается с инструкции ALTER DATABASE, которая переключает модель восстановления на FULL.
USE master;
--Create tail-log backup.
BACKUP LOG AdventureWorks
TO DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'
WITH NORECOVERY;
GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks
FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'
WITH FILE=1,
NORECOVERY;
--Restore the regular log backup (from backup set 2).
RESTORE LOG AdventureWorks
FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'
WITH FILE=2,
NORECOVERY;
--Restore the tail-log backup (from backup set 3).
RESTORE LOG AdventureWorks
FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'
WITH FILE=3,
NORECOVERY;
GO
--recover the database:
RESTORE DATABASE AdventureWorks WITH RECOVERY;
GO
Восстановление до точки сбоя
Восстановление полной резервной копии базы данных
Как выполнить восстановление резервной копии базы данных (Transact-SQL)
Как восстановить резервную копию базы данных (среда SQL Server Management Studio)
Важно! |
---|
Если база данных восстанавливается на другой экземпляр сервера, см. разделы Создание копий баз данных с помощью резервного копирования и восстановления и Управление метаданными при обеспечении доступности базы данных на другом экземпляре сервера. |
Восстановление разностной резервной копии базы данных
Как восстановить разностную резервную копию базы данных (Transact-SQL)
Как восстановить разностную резервную копию (среда SQL Server Management Studio)
Восстановление резервной копии журнала транзакций
После восстановления резервных копий данных необходимо восстановить журналы всех более поздних транзакций, а затем восстановить саму базу данных.
Как применить резервную копию журналов транзакций (Transact-SQL)
Как восстановить резервную копию журнала транзакций (среда SQL Server Management Studio)
Восстановление резервной копии с помощью объектов SMO
Восстановление на момент времени
При использовании модели полного восстановления база данных может быть восстановлена к определенному моменту времени в пределах резервной копии журнала. Этим моментом времени может быть определенная дата и время, помеченная транзакция или регистрационный номер транзакции в журнале. Дополнительные сведения см. в разделе Восстановление базы данных на момент времени в пределах резервной копии.
Поддержка резервных копий предыдущих версий SQL Server
В SQL Server 2008 можно восстанавливать резервные копии, созданные в SQL Server 2000, SQL Server 2005 или SQL Server 2008. Однако восстановление резервных копий баз данных master, model и msdb, сделанных в SQL Server 2000 или SQL Server 2005, в SQL Server 2008 невозможно. Кроме того, резервные копии, созданные в SQL Server 2008, невозможно восстановить в более ранних версиях SQL Server.
В SQL Server 2008 используется путь по умолчанию, отличный от пути, использованного в предыдущих версиях. Поэтому, чтобы восстановить из резервной копии базу данных, созданную в месте расположения по умолчанию SQL Server 2000 или SQL Server 2005, необходимо использовать параметр MOVE. Сведения о новом пути по умолчанию см. в разделе Расположение файлов для экземпляра по умолчанию и именованных экземпляров SQL Server.
Примечание |
---|
Сведения об обновлении базы данных, созданной в SQL Server 7.0 или более ранней версии, до SQL Server 2005 см. в разделе Копирование баз данных SQL Server 7.0 и более ранних версий. |
Журнал изменений
Обновления |
---|
В разделе «Полное восстановление базы данных» исправлен синтаксис, применяемый при восстановлении разностной резервной копии в шаге 3. |
В разделе «Полное восстановление базы данных» исправлен код примера, относящегося к созданию резервной копии заключительного фрагмента журнала. |
См. также