Udostępnij za pośrednictwem


Przywracanie bazy danych do punktu awarii — pełne odzyskiwanie

Dotyczy:programu SQL Server

W tym temacie opisano sposób przywracania do punktu awarii. Temat dotyczy tylko baz danych korzystających z pełnych lub rejestrowanych zbiorczo modeli odzyskiwania.

Aby przywrócić do punktu niepowodzenia

  1. Wykonaj kopię zapasową końcowej części dziennika, uruchamiając następującą podstawową instrukcję BACKUP:

    BACKUP LOG <database_name> TO <backup_device>   
       WITH NORECOVERY, NO_TRUNCATE;  
    
  2. Przywróć pełną kopię zapasową bazy danych, uruchamiając następującą podstawową instrukcję RESTORE DATABASE:

    RESTORE DATABASE <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  3. Opcjonalnie przywróć różnicową kopię zapasową bazy danych, uruchamiając następującą podstawową instrukcję RESTORE DATABASE:

    RESTORE DATABASE <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  4. Zastosuj każdy dziennik transakcji, w tym kopię zapasową dziennika końcowego utworzoną w kroku 1, określając wartość WITH NORECOVERY w instrukcji RESTORE LOG:

    RESTORE LOG <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  5. Odzyskaj bazę danych, uruchamiając następującą instrukcję RESTORE DATABASE:

    RESTORE DATABASE <database_name>   
       WITH RECOVERY;  
    

Przykład

Przed uruchomieniem przykładu należy wykonać następujące przygotowania:

  1. Domyślny model odzyskiwania bazy danych AdventureWorks2022 to prosty model odzyskiwania. Ponieważ ten model odzyskiwania nie obsługuje przywracania do punktu awarii, ustaw AdventureWorks2022 na użycie pełnego modelu odzyskiwania, uruchamiając następującą instrukcję ALTER DATABASE:

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks2022 SET RECOVERY FULL;  
    
  2. Utwórz pełną kopię zapasową bazy danych przy użyciu następującej instrukcji BACKUP.

    BACKUP DATABASE AdventureWorks2022 TO DISK = 'C:\AdventureWorks2022_Data.bck';  
    
  3. Utwórz rutynową kopię zapasową dziennika:

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

Poniższy przykład przywraca utworzone wcześniej kopie zapasowe po utworzeniu kopii zapasowej dziennika końcowego bazy danych AdventureWorks2022. (W tym kroku przyjęto założenie, że można uzyskać dostęp do dysku dziennika).

Najpierw przykład tworzy kopię zapasową dziennika końcowego bazy danych, która rejestruje bieżący dziennik i pozostawia bazę danych w stanie Przywracania. Następnie przykład przywraca kopię zapasową bazy danych, stosuje utworzoną wcześniej rutynową kopię zapasową dziennika i stosuje kopię zapasową dziennika końcowego. Na koniec przykład odzyskuje bazę danych w osobnym kroku.

Notatka

Domyślnym zachowaniem jest odzyskanie bazy danych w ramach instrukcji, która przywraca ostateczną kopię zapasową.

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

Zobacz też

BACKUP (Transact-SQL)
PRZYWRÓĆ (Transact-SQL)