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