Как произвести восстановление до точки сбоя (Transact-SQL)
В этом подразделе описывается восстановление до точки сбоя. Сведения в этом разделе относятся только к тем базам данных, которые используют модель полного восстановления или модель восстановления с неполным протоколированием.
Восстановление до точки сбоя
Создайте резервную копию заключительного фрагмента журнала базы данных, взяв за основу следующую инструкцию BACKUP:
BACKUP LOG <database_name>TO <backup_device> WITH NORECOVERY, NO_TRUNCATE;
Восстановите базу данных из ее полной резервной копии, взяв за основу следующую инструкцию RESTORE DATABASE:
RESTORE DATABASE <database_name> FROM <backup_device> WITH NORECOVERY;
Можно также восстановить базу данных из ее разностной резервной копии, взяв за основу следующую инструкцию RESTORE DATABASE:
RESTORE DATABASE <database_name> FROM <backup_device> WITH NORECOVERY;
Примените все журналы транзакций, включая резервную копию заключительного фрагмента журнала (созданную на первом шаге), указав предложение WITH NORECOVERY в инструкции RESTORE LOG:
RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY;
Восстановите базу данных, выполнив следующую инструкцию RESTORE DATABASE:
RESTORE DATABASE <database_name> WITH RECOVERY;
Пример
Перед запуском этого примера необходимо завершить следующие подготовительные действия.
По умолчанию, база данных База данных AdventureWorks2008R2 имеет простую модель восстановления. Поскольку в этой модели не поддерживается восстановление до момента сбоя, настройте База данных AdventureWorks2008R2 на использование модели полного восстановления, выполнив следующую инструкцию ALTER DATABASE:
USE master; GO ALTER DATABASE AdventureWorks2008R2 SET RECOVERY FULL;
Создайте полную резервную копию базы данных при помощи следующей инструкции BACKUP:
BACKUP DATABASE AdventureWork2008R2s TO DISK = 'C:\AdventureWorks2008R2_Data.bck';
Создайте резервную копию журналов:
BACKUP LOG AdventureWorks2008R2 TO DISK = 'C:\AdventureWorks2008R2_Log.bck';
В следующем примере после создания резервной копии заключительного фрагмента журнала базы данных База данных AdventureWorks2008R2 производится восстановление ранее созданной резервной копии (на этом шаге предполагается, что имеется доступ к диску, на котором хранятся журналы).
Вначале создается резервная копия заключительного фрагмента журнала базы данных, которая захватывает активный журнал и оставляет базу данных в состоянии восстановления. После этого в данном примере производится восстановление резервной копии базы данных, применяется раннее созданная процедура резервного копирования журналов и создается резервная копия заключительного фрагмента журнала. Наконец, отдельным шагом производится восстановление базы данных.
Примечание |
---|
По умолчанию, при обработке инструкции, выполняющей окончательное восстановление резервной копии, производится восстановление базы данных. |
/* Example of restoring a to the point of failure */
-- Step 1: Create a tail-log backup by using WITH NORECOVERY.
BACKUP LOG AdventureWorks2008R2
TO DISK = 'C:\AdventureWorks2008R2_Log.bck'
WITH NORECOVERY;
GO
-- Step 2: Restore the full database backup.
RESTORE DATABASE AdventureWorks2008R2
FROM DISK = 'C:\AdventureWorks2008R2_Data.bck'
WITH NORECOVERY;
GO
-- Step 3: Restore the first transaction log backup.
RESTORE LOG AdventureWorks2008R2
FROM DISK = 'C:\AdventureWorks2008R2_Log.bck'
WITH NORECOVERY;
GO
-- Step 4: Restore the tail-log backup.
RESTORE LOG AdventureWorks2008R2
FROM DISK = 'C:\AdventureWorks2008R2_Log.bck'
WITH NORECOVERY;
GO
-- Step 5: Recover the database.
RESTORE DATABASE AdventureWorks2008R2
WITH RECOVERY;
GO
См. также