Dela via


Återställa databasen till felpunkten – fullständig återställning

gäller för:SQL Server

I det här avsnittet beskrivs hur du återställer till den punkt där felet inträffade. Ämnet är endast relevant för databaser som använder de fullständiga eller massloggade återställningsmodellerna.

Så här återställer du till felpunkten

  1. Säkerhetskopiera slutet på loggen genom att köra följande grundläggande BACKUP-instruktion:

    BACKUP LOG <database_name> TO <backup_device>   
       WITH NORECOVERY, NO_TRUNCATE;  
    
  2. Återställ en fullständig databassäkerhetskopia genom att köra följande grundläggande RESTORE DATABASE-instruktion:

    RESTORE DATABASE <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  3. Alternativt kan du återställa en differentiell databassäkerhetskopia genom att köra följande grundläggande RESTORE DATABASE-instruktion:

    RESTORE DATABASE <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  4. Använd varje transaktionslogg, inklusive säkerhetskopian av slutloggen som du skapade i steg 1, genom att ange WITH NORECOVERY i instruktionen RESTORE LOG :

    RESTORE LOG <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  5. Återställ databasen genom att köra följande RESTORE DATABASE-instruktion:

    RESTORE DATABASE <database_name>   
       WITH RECOVERY;  
    

Exempel

Innan du kan köra exemplet måste du slutföra följande förberedelser:

  1. Standardåterställningsmodellen för AdventureWorks2022-databasen är den enkla återställningsmodellen. Eftersom den här återställningsmodellen inte stöder återställning till tidpunkten för ett fel anger du AdventureWorks2022 att använda den fullständiga återställningsmodellen genom att köra följande ALTER DATABASE--instruktion:

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks2022 SET RECOVERY FULL;  
    
  2. Skapa en fullständig säkerhetskopia av databasen med hjälp av följande BACKUP-kommando:

    BACKUP DATABASE AdventureWorks2022 TO DISK = 'C:\AdventureWorks2022_Data.bck';  
    
  3. Skapa en rutinmässig loggsäkerhetskopia:

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

I följande exempel återställs de säkerhetskopior som skapades tidigare, efter att en tail-log-säkerhetskopia av AdventureWorks2022-databasen har skapats. (Det här steget förutsätter att loggdisken kan nås.)

Först skapar exemplet en slutloggssäkerhetskopia av databasen som omfattar den aktiva loggen och lämnar databasen i återställningsläge. Sedan återställer exempelprogrammet säkerhetskopian av databasen, applicerar den rutinmässiga loggsäkerhetskopian som skapades tidigare och applicerar säkerhetskopian av slutloggen. Slutligen återställer exemplet databasen i ett separat steg.

Not

Standardbeteendet är att återställa en databas som en del av instruktionen som återställer den slutliga säkerhetskopian.

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

Se även

SÄKERHETSKOPIA (Transact-SQL)
ÅTERSTÄLL (Transact-SQL)