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