Dela via


Återställa en SQL Server-databas till en specifik tidpunkt (full återställningsmodell)

gäller för:SQL Server

Det här avsnittet beskriver hur du återställer en databas till en tidpunkt i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL. Det här avsnittet är endast relevant för SQL Server-databaser som använder de fullständiga eller massloggade återställningsmodellerna.

Viktig

Under den massloggade återställningsmodellen, om en loggsäkerhetskopia innehåller massloggade ändringar, är punktåterställning inte möjligt till en punkt inom den säkerhetskopian. Databasen måste återställas till slutet av säkerhetskopieringen av transaktionsloggen.

Innan du börjar

Rekommendationer

  • Använd STANDBY för att hitta okänd tidpunkt.

  • Ange tidpunkten tidigt i en återställningssekvens

Säkerhet

Behörigheter

Om databasen som återställs inte finns måste användaren ha behörigheten SKAPA DATABAS för att kunna köra RESTORE. Om databasen finns, har återställningsbehörigheter som standard medlemmar i de fasta serverrollerna sysadmin och dbcreator, samt ägaren (dbo) av databasen (för alternativet FROM DATABASE_SNAPSHOT finns databasen alltid).

ÅTERSTÄLLNINGsbehörigheter ges till roller där medlemskapsinformation alltid är lättillgänglig för servern. Eftersom medlemskap i fasta databasroller bara kan kontrolleras när databasen är både tillgänglig och oskadad, vilket inte alltid är fallet när RESTORE körs, har medlemmar i den fasta databasrollen db_owner inte RESTORE-behörighet.

Använda SQL Server Management Studio

Återställa en databas till en specifik tidpunkt

  1. I Object Explorer ansluter du till lämplig instans av SQL Server Database Engine och expanderar serverträdet.

  2. Expandera Databaser. Beroende på databasen väljer du antingen en användardatabas eller expanderar systemdatabaseroch väljer sedan en systemdatabas.

  3. Högerklicka på databasen, peka på Uppgifter, peka på Återställoch klicka sedan på Database.

  4. På sidan Allmänt använder du avsnittet Source för att ange källan och platsen för säkerhetskopieringsuppsättningarna som ska återställas. Välj något av följande alternativ:

    • Databas

      Välj den databas som ska återställas från listrutan. Listan innehåller endast databaser som har säkerhetskopierats enligt msdb säkerhetskopieringshistorik.

    Obs.

    Om säkerhetskopieringen tas från en annan server kommer målservern inte att ha informationen om säkerhetskopieringshistoriken för den angivna databasen. I det här fallet väljer du Enhet för att manuellt ange den fil eller enhet som ska återställas.

    • Enhet

      Klicka på knappen bläddra (...) för att öppna dialogrutan Välj säkerhetskopieringsenheter. I rutan Säkerhetskopieringsmediatyp väljer du någon av de angivna enhetstyperna. Om du vill välja en eller flera enheter för rutan Säkerhetskopieringsmedia klickar du på Lägg till.

      När du har lagt till de enheter som du vill använda i listrutan Säkerhetskopieringsmedia klickar du på OK för att återgå till sidan Allmänt.

      I listrutan Källa: Enhet: Databas väljer du namnet på databasen som ska återställas.

      Observera Den här listan är endast tillgänglig när Enhet är markerad. Endast databaser som har säkerhetskopior på den valda enheten är tillgängliga.

  5. I avsnittet Mål fylls rutan Database automatiskt i med namnet på databasen som ska återställas. Om du vill ändra namnet på databasen anger du det nya namnet i rutan Database.

  6. Klicka på Tidslinje för att komma åt dialogrutan Säkerhetskopieringstidslinje.

  7. I avsnittet Återställ till klickar du på Specifik datum och tid.

  8. Använd antingen rutorna Date och Time eller skjutreglaget för att ange ett specifikt datum och tid där återställningen ska stoppas. Välj OK.

    Notera

    Använd rutan tidslinjeintervall för att ändra hur lång tid som visas på tidslinjen.

  9. När du har angett en viss tidpunkt ser Database Recovery Advisor till att endast säkerhetskopior som krävs för att återställa till den tidpunkten väljs i kolumnen Återställ i Säkerhetskopieringsuppsättningar för att återställa rutnät. Dessa valda säkerhetskopior utgör den rekommenderade återställningsplanen för återställning vid en specifik tidpunkt. Du bör endast använda de valda säkerhetskopiorna för din åtgärd för återställning till en specifik tidpunkt.

    Information om kolumnerna i Backup-uppsättningar för att återställa rutnät finns i Återställ databas (allmän sida). Information om Database Recovery Advisor finns i Återställning och återhämtning: översikt (SQL Server).

  10. På sidan Alternativ i panelen Återställningsalternativ kan du välja något av följande alternativ, om det är lämpligt för din situation:

    • Skriv över den befintliga databasen (MED ÅTERSTÄLLNING)

    • Bevara replikeringsinställningarna (WITH KEEP_REPLICATION)

    • Begränsa åtkomsten till den återställde databasen (WITH RESTRICTED_USER)

    Mer information om de här alternativen finns i Återställ databas (alternativsida).

  11. Välj ett alternativ för rutan Återställningsläge. Den här rutan bestämmer databasens tillstånd efter återställningsåtgärden.

    • RESTORE WITH RECOVERY är standardbeteendet som gör att databasen är redo att användas genom att rulla tillbaka de obekräftade transaktionerna. Det går inte att återställa ytterligare transaktionsloggar. Välj det här alternativet om du återställer alla nödvändiga säkerhetskopior nu.

    • RESTORE with NORECOVERY som lämnar databasen icke-operativ och inte återställer de ej genomförda transaktionerna. Ytterligare transaktionsloggar kan återställas. Databasen kan inte användas förrän den har återställts.

    • RESTORE WITH STANDBY som lämnar databasen i skrivskyddat läge. Den återställer ogenomförda transaktioner, men sparar ångra-åtgärderna i en väntelägesfil så att återställningseffekterna kan återställas.

    Beskrivningar av alternativen finns i Återställ databas (alternativsida).

  12. Säkerhetskopiera slutloggen innan du återställer; kommer att väljas om det är nödvändigt för det klockslag du har valt. Du behöver inte ändra den här inställningen, men du kan välja att säkerhetskopiera loggens svans även om den inte krävs.

  13. Återställningsåtgärder kan misslyckas om det finns aktiva anslutningar till databasen. Kontrollera alternativet Stäng befintliga anslutningar för att säkerställa att alla aktiva anslutningar mellan Management Studio och databasen är stängda. Den här kryssrutan ställer in databasen i enanvändarläge innan du utför återställningsåtgärderna och ställer in databasen i fleranvändarläge när den är klar.

  14. Välj Fråga innan du återställer varje säkerhetskopia om du vill uppmanas mellan varje återställningsåtgärd. Detta är vanligtvis inte nödvändigt om inte databasen är stor och du vill övervaka status för återställningsåtgärden.

Använda Transact-SQL

Innan du börjar

En angiven tid återställs alltid från en loggsäkerhetskopia. I varje RESTORE LOG-instruktion i återställningssekvensen måste du ange din mål-tidpunkt eller transaktion i en identisk STOPAT-sats. Som ett villkor för att utföra en återställning av en viss tidpunkt måste du först återställa en fullständig säkerhetskopiering av databasen vars slutpunkt är tidigare än måltiden för återställning. Den fullständiga databassäkerhetskopian kan vara äldre än den senaste fullständiga databassäkerhetskopian så länge du sedan återställer varje efterföljande loggsäkerhetskopia, upp till och med loggsäkerhetskopian som innehåller din målpunkt i tiden.

För att hjälpa dig att identifiera vilken databassäkerhetskopia som ska återställas kan du ange WITH STOPAT-satsen i instruktionen RESTORE DATABASE för att utlösa ett fel om en databassäkerhetskopia är för ny för den angivna tidpunkten. Den fullständiga säkerhetskopieringen av data återställs alltid, även om den innehåller den avsedda tiden.

Grundläggande Transact-SQL syntax

ÅTERSTÄLL LOGGEN database_name FRÅN <backup_device> MED STOPAT =tid, RECOVERY...

Återställningspunkten är den senaste transaktionsbekräftelsen som inträffade vid eller före det datum- och tidsvärde som anges av tidpunkten .

Om du bara vill återställa de ändringar som gjordes före en viss tidpunkt anger du WITH STOPAT =time för varje säkerhetskopia som du återställer. Detta säkerställer att du inte går förbi måltiden.

Återställa en databas till en tidpunkt

Note

Ett exempel på den här proceduren finns i Exempel (Transact-SQL), senare i det här avsnittet.

  1. Anslut till den serverinstans där du vill återställa databasen.

  2. Kör instruktionen RESTORE DATABASE med alternativet NORECOVERY.

    Anteckning

    Om en partiell återställningssekvens exkluderar någon FILESTREAM- filgrupp stöds inte återställning till tidpunkt. Du kan tvinga återställningssekvensen att fortsätta. De FILESTREAM-filgrupper som utelämnas från RESTORE-instruktionen kan dock aldrig återställas. Om du vill framtvinga en återställning vid en viss tidpunkt anger du alternativet CONTINUE_AFTER_ERROR tillsammans med alternativet STOPAT, STOPATMARK eller STOPBEFOREMARK, som du också måste ange i efterföljande RESTORE LOG-instruktioner. Om du anger CONTINUE_AFTER_ERROR lyckas den partiella återställningssekvensen och FILESTREAM-filgruppen blir oåterkallelig.

  3. Återställ den senaste eventuella differentiella databassäkerhetskopian utan att återställa databasen (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).

  4. Använd varje säkerhetskopiering av transaktionsloggen i samma sekvens som de skapades i, och ange den tidpunkt då du tänker sluta återställa loggen (RESTORE DATABASE database_name FROM <backup_device> WITH STOPAT =time, RECOVERY).

    Not

    Alternativen RECOVERY och STOPAT. Om säkerhetskopieringen av transaktionsloggen inte innehåller den begärda tiden (till exempel om den angivna tiden är längre än den tid som omfattas av transaktionsloggen) genereras en varning och databasen förblir oupptäckt.

Exempel (Transact-SQL)

I följande exempel återställs en databas till dess tillstånd från och med 12:00 AMApril 15, 2020 och visar en återställningsåtgärd som omfattar flera loggsäkerhetskopior. På säkerhetskopieringsenheten, AdventureWorksBackups, är den fullständiga databassäkerhetskopian som ska återställas den tredje säkerhetskopian på enheten (FILE = 3), den första loggsäkerhetskopian är den fjärde säkerhetskopieringsuppsättningen (FILE = 4), och den andra loggsäkerhetskopian är den femte säkerhetskopieringsuppsättningen (FILE = 5).

Viktig

Den AdventureWorks2022 databasen använder den enkla återställningsmodellen. För att tillåta loggsäkerhetskopior angavs databasen att använda den fullständiga återställningsmodellen med hjälp av ALTER DATABASE AdventureWorks SET RECOVERY FULLinnan en fullständig databassäkerhetskopia gjordes.

RESTORE DATABASE AdventureWorks  
   FROM AdventureWorksBackups  
   WITH FILE=3, NORECOVERY;  
  
RESTORE LOG AdventureWorks  
   FROM AdventureWorksBackups  
   WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';  
  
RESTORE LOG AdventureWorks  
   FROM AdventureWorksBackups  
   WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';  
RESTORE DATABASE AdventureWorks WITH RECOVERY;   
GO  
  

Relaterade uppgifter

Se även

säkerhetskopieringsuppsättning (Transact-SQL)
ÅTERSTÄLL (Transact-SQL)
RESTORE HEADERONLY (Transact-SQL)