Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Om data i en onlinedatabas skadas kan det i vissa fall vara ett lämpligt alternativ till att återställa databasen från en säkerhetskopia till en databasögonblicksbild som föregår skadan. Det kan till exempel vara användbart att återställa en databas för att återställa ett allvarligt användarfel nyligen, till exempel en borttagen tabell. Alla ändringar som görs efter att ögonblicksbilden har skapats går dock förlorade.
Innan du börjar:
Om du vill återställa en databas till en ögonblicksbild av databasen med hjälp av:Transact-SQL-
Innan du börjar
Begränsningar och restriktioner
Återställning stöds inte under följande villkor:
Det finns flera ögonblicksbilder för databasen. För återställning får det bara finnas en ögonblicksbild för databasen som du planerar att återställa till.
Skrivskyddade eller komprimerade filgrupper finns i databasen.
Alla filer är nu offline men var online när ögonblicksbilden skapades.
Innan du återställer en databas bör du tänka på följande begränsningar:
Att återgå är inte avsett för återställning av media. En ögonblicksbild av databasen är en ofullständig kopia av databasfilerna, så om antingen databasen eller databasögonblicksbilden är skadad är det troligt att det är omöjligt att återställa från en ögonblicksbild. Dessutom, även när det är möjligt, är det osannolikt att återställning vid datakorruption kommer att rätta till problemet. Därför är det viktigt att du utför regelbundna säkerhetskopieringar och testar återställningsplanen för att skydda en databas. Mer information finns i Säkerhetskopiering och återställning av SQL Server-databaser.
Note
Om du behöver kunna återställa källdatabasen till den tidpunkt då du skapade en ögonblicksbild av databasen använder du den fullständiga återställningsmodellen och implementerar en säkerhetskopieringsprincip som gör att du kan göra det.
Den ursprungliga källdatabasen skrivs över av den återställda databasen, så alla uppdateringar av databasen sedan ögonblicksbilden skapades går förlorade.
Återställningsåtgärden skriver också över den gamla loggfilen och återskapar loggen. Därför kan du inte flytta fram den återställda databasen till tidpunkten för användarfelet. Därför rekommenderar vi att du säkerhetskopierar loggen innan du återställer en databas.
Note
Även om du inte kan återställa den ursprungliga loggen för att vidarebefordra databasen kan informationen i den ursprungliga loggfilen vara användbar för att återskapa förlorade data.
Återställningen bryter kedjan för loggsäkerhetskopiering. Därför måste du först göra en fullständig säkerhetskopia av databasen eller en säkerhetskopia av filen innan du kan göra loggsäkerhetskopior av den återställda databasen. Vi rekommenderar en fullständig säkerhetskopia av databasen.
Under en återställningsåtgärd är både ögonblicksbilden och källdatabasen inte tillgängliga. Källdatabasen och ögonblicksbilden är båda märkta "Vid återställning". Om ett fel inträffar under återställningsåtgärden, när databasen startas igen, kommer återställningsåtgärden att försöka slutföra återställningen.
Metadata för en återställd databas är samma som metadata vid tidpunkten för ögonblicksbilden.
Om du återställer försvinner alla fulltextkataloger.
Förutsättningar
Kontrollera att källdatabasen och databasögonblicksbilden uppfyller följande krav:
Kontrollera att databasen inte har skadats.
Obs
Om databasen har skadats måste du återställa den från säkerhetskopior. Mer information finns i Complete Database Restores (Simple Recovery Model) eller Complete Database Restores (Fullständig återställningsmodell).
Identifiera en ny ögonblicksbild som skapades före felet. Mer information finns i Visa en databasögonblicksbild (SQL Server).
Ta bort alla andra ögonblicksbilder som för närvarande finns i databasen. Mer information finns i Ta bort en databasögonblicksbild (Transact-SQL).
Säkerhet
Behörigheter
Alla användare som har behörighet att återställa databas på källdatabasen kan återställa den till sitt tillstånd när en ögonblicksbild av databasen skapades.
Återställa en databas till en databasögonblicksbild (med Transact-SQL)
Så här återställer du en databas till en databasögonblicksbild
Not
Ett exempel på den här proceduren finns i Exempel (Transact-SQL), senare i det här avsnittet.
Identifiera den ögonblicksbild av databasen som du vill återställa databasen till. Du kan visa ögonblicksbilder på en databas i SQL Server Management Studio (se Visa en databasögonblicksbild (SQL Server)). Du kan också identifiera källdatabasen för en vy genom kolumnen source_database_id i katalogvyn sys.databases (Transact-SQL).
Ta bort eventuella andra databasögonblicksbilder.
Information om hur du tar bort ögonblicksbilder finns i Ta bort en databasögonblicksbild (Transact-SQL). Om databasen använder den fullständiga återställningsmodellen bör du säkerhetskopiera loggen innan du återställer den. Mer information finns i Säkerhetskopiera en transaktionslogg (SQL Server) eller säkerhetskopiera transaktionsloggen när databasen är skadad (SQL Server).
Utför återställningsåtgärden.
En återställningsåtgärd kräver behörighet för att återställa databas på källdatabasen. Om du vill återställa databasen använder du följande Transact-SQL-instruktion:
Återställ databas database_name från database_snapshot =database_snapshot_name
Där database_name är källdatabasen och database_snapshot_name är namnet på ögonblicksbilden som du vill återställa databasen till. Observera att du i den här instruktionen måste ange ett namn på ögonblicksbilden i stället för en säkerhetskopieringsenhet.
Mer information finns i RESTORE (Transact-SQL).
Not
Under återställningen är både ögonblicksbilden och källdatabasen inte tillgängliga. Källdatabasen och ögonblicksbilden markeras båda som "Vid återställning". Om ett fel inträffar under återställningsåtgärden kommer det att försöka slutföra återställningen när databasen startas igen.
Om databasägaren har ändrats sedan databasögonblicksbilden skapades kanske du vill uppdatera databasägaren för den återställda databasen.
Notera
Den återställda databasen behåller behörigheter och konfiguration (till exempel databasägare och återställningsmodell) för databasögonblicksbilden.
Starta databasen.
Du kan också säkerhetskopiera den återställda databasen, särskilt om den använder den fullständiga (eller massloggade) återställningsmodellen. Information om hur du säkerhetskopierar en databas finns i Skapa en fullständig databassäkerhetskopiering (SQL Server).
Exempel (Transact-SQL)
Det här avsnittet innehåller följande exempel på hur du återställer en databas till en ögonblicksbild av databasen:
A. Återställa en ögonblicksbild i AdventureWorks-databasen
Det här exemplet förutsätter att det för närvarande bara finns en ögonblicksbild i AdventureWorks2022
-databasen. Det exempel som skapar ögonblicksbilden som databasen återställs till här finns i Skapa en ögonblicksbild av databasen (Transact-SQL).
USE master;
-- Reverting AdventureWorks to AdventureWorks_dbss1800
RESTORE DATABASE AdventureWorks from
DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO
B. Återställa en ögonblicksbild i försäljningsdatabasen
Det här exemplet förutsätter att det för närvarande finns två ögonblicksbilder i databasen Sales: sales_snapshot0600 och sales_snapshot1200. Exemplet tar bort de äldre ögonblicksbilderna och återställer databasen till den nyare ögonblicksbilden.
För koden för att skapa exempeldatabasen och ögonblicksbilder som det här exemplet är beroende av, se:
För Sales-databasen och sales_snapshot0600 ögonblicksbilden, se "Skapa en databas med filgrupper" och "Skapa en ögonblicksbild av databas" i CREATE DATABASE (SQL Server Transact-SQL).
För den sales_snapshot1200 ögonblicksbilden, se "Skapa en ögonblicksbild på försäljningsdatabasen" i Skapa en databasögonblicksbild (Transact-SQL).
--Test to see if sales_snapshot0600 exists and if it
-- does, delete it.
IF EXISTS (SELECT database_id FROM sys.databases
WHERE NAME='sales_snapshot0600')
DROP DATABASE SalesSnapshot0600;
GO
-- Reverting Sales to sales_snapshot1200
USE master;
RESTORE DATABASE Sales FROM DATABASE_SNAPSHOT = 'sales_snapshot1200';
GO
Relaterade uppgifter
Se även
Databasögonblicksbilder (SQL Server)
ÅTERSTÄLL (Transact-SQL)
sys.databases (Transact-SQL)
Databasmirroring och databasögonblicksbilder (SQL Server)