Восстановление базы данных до точки сбоя — полное восстановление

Область применения:SQL Server

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

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

  1. Создайте резервную копию хвоста журнала, выполнив следующую базовую BACKUP инструкцию:

    BACKUP LOG <database_name> TO <backup_device>   
       WITH NORECOVERY, NO_TRUNCATE;  
    
  2. Восстановите полную резервную копию базы данных, выполнив следующую базовую RESTORE DATABASE инструкцию:

    RESTORE DATABASE <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  3. При необходимости восстановите разностную резервную копию базы данных, выполнив следующую базовую RESTOREDATABASE инструкцию:

    RESTORE DATABASE <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  4. Примените каждый журнал транзакций, включая резервную копию tail-log, созданную на шаге 1, указав WITH NORECOVERY в инструкции RESTORE LOG:

    RESTORE LOG <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  5. Восстановите базу данных, выполнив следующую RESTOREDATABASE инструкцию:

    RESTORE DATABASE <database_name>   
       WITH RECOVERY;  
    

Пример

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

  1. По умолчанию, база данных AdventureWorks2025 имеет простую модель восстановления. Так как эта модель восстановления не поддерживает восстановление до точки сбоя, установите AdventureWorks2025 для использования модели полного восстановления, выполнив следующую ALTER DATABASE инструкцию:

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks2022 SET RECOVERY FULL;  
    
  2. Создайте полную резервную копию базы данных с помощью следующей BACKUP инструкции:

    BACKUP DATABASE AdventureWorks2022 TO DISK = 'C:\AdventureWorks2022_Data.bck';  
    
  3. Создайте резервную копию журналов:

    BACKUP LOG AdventureWorks2022 TO DISK = 'C:\AdventureWorks2022_Log.bck';  
    

В следующем примере создается резервная копия заключительного фрагмента журнала базы данных AdventureWorks2025, после чего восстанавливаются ранее созданные резервные копии. (на этом шаге предполагается, что имеется доступ к диску, на котором хранятся журналы).

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

Примечание.

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

/* 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  

См. также

BACKUP (Transact-SQL)
RESTORE (Transact-SQL)