Kommentar
Å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
Du kan återställa en transaktionsloggbackup i SQL Server genom att använda SQL Server Management Studio, Transact-SQL eller PowerShell.
Förutsättningar
Du måste återställa säkerhetskopior i den ordning du skapade dem. Innan du återställer en specifik transaktionslogg-backup, återställ följande tidigare säkerhetskopior utan att rulla tillbaka icke-committade transaktioner, genom att använda WITH NORECOVERY:
Den fullständiga databasbackupen och, valfritt, den sista differentiella backupen som togs innan säkerhetskopian av transaktionsloggen. Databasen måste ha använt den fullständiga eller bulkloggade återställningsmodellen innan den senaste fullständiga eller differentiella databasbackupen skapades.
Alla transaktionsloggbackuper som tagits efter den fullständiga databasbackupen eller den differentiella backupen (om du återställer en) och före den transaktionsloggbackupen. Du måste återställa loggbackuper i den ordning du skapade dem, utan några luckor i loggkedjan.
För mer information om transaktionslogg-backuper, se Transaktionslogg-backuper och Tillämpa transaktionslogg-backups.
Behörigheter
För en befintlig databas RESTORE är behörigheterna som standard för medlemmar i sysadmin och dbcreator fasta serverroller och databasens ägare (dbo).
RESTORE Behörigheter tilldelas roller vars medlemskap servern alltid kan kontrollera. Servern kan kontrollera medlemskap i fast databasroll endast när databasen är tillgänglig och oskadad, vilket inte alltid är sant när RESTORE körs. Av denna anledning har medlemmar i den fasta databasrollen RESTORE inte behörigheter.
Remarks
För en spegeldatabas eller en sekundär databas i en tillgänglighetsgrupp som du inte har anslutit till tillgänglighetsgruppen återställer du den senaste loggbackupen med alternativet NORECOVERY (-NoRecovery i PowerShell). Databasen måste vara kvar i återställningsläget.
För en sekundär loggöverföringsdatabas, återställ den senaste loggbackupen med NORECOVERY alternativet eller STANDBY alternativet (-StandbyFile i PowerShell). Alternativet STANDBY ger skrivskyddad åtkomst till databasen mellan återställningar.
Använd SQL Server Management Studio
Varning
Vid en typisk återställning väljer du loggbackuperna tillsammans med data och differentierade backuper i dialogrutan Återställ databas .
Anslut till rätt instans av Databasmotor för SQL Server. I Object Explorer, välj servernamnet för att expandera serverträdet.
Expandera Databaser. Välj en användardatabas, eller fäll ut Systemdatabaser och välj en systemdatabas.
Högerklicka på databasen, peka på Aktiviteter, peka på Återställ och välj sedan Transaktionslogg. Dialogrutan Återställ transaktionslogg öppnas.
Not
Om transaktionsloggen inte är tillgänglig kan du behöva återställa en fullständig eller differentiell backup först. Använd dialogrutan Återställ databas .
På sidan Allmänt, i listrutan Databas, välj databasen. Listan visar endast databaser i återställningsläget.
För att ange källan och platsen för de säkerhetskopior som ska återställas, välj ett av följande alternativ:
Från tidigare säkerhetskopior av databas
Välj den databas som ska återställas från listrutan. Listan innehåller endast databaser med säkerhetskopior registrerade i msdbs backuphistorik.
Från fil eller band
Välj knappen bläddra (...) för att öppna dialogrutan Välj säkerhetskopieringsenheter. I rutan för typ av backup media , välj en enhetstyp. För att lägga till en eller flera enheter i rutan Säkerhetskopieringsmedia, välj Lägg till.
Efter att du har lagt till de enheter du vill ha, välj OK för att återvända till sidan Generellt .
I Välj säkerhetskopieringar av transaktionsloggen för att återställa rutnät väljer du de säkerhetskopior som ska återställas. Rutnätet listar de transaktionslogg-backuper som finns tillgängliga för den valda databasen. Rutnätet listar loggbackuper i ordningen efter de loggsekvensnummer (LSN) de innehåller, och du måste återställa dem i denna ordning.
I följande tabell visas kolumnrubrikerna i rutnätet och deras värden beskrivs.
Rubrik Värde Återställ Valda kryssrutor visar vilka backupuppsättningar som ska återställas. Namn Namnet på säkerhetskopieringsuppsättningen. Komponent Säkerhetskopierad komponent: Database, Fileeller <tom> (för transaktionsloggar). Databas Namnet på databasen som ingår i säkerhetskopieringsåtgärden. startdatum Datum och tid när säkerhetskopieringen påbörjades, som visas i den regionala inställningen för klienten. Avslutsdatum Datum och tid när säkerhetskopieringen har slutförts, vilket visas i den regionala inställningen för klienten. första LSN- Loggsekvensnummer för den första transaktionen i säkerhetskopieringsuppsättningen. Tomt utrymme för filsäkerhetskopior. senaste LSN- Loggsekvensnummer för den senaste transaktionen i säkerhetskopieringsuppsättningen. Tomt utrymme för filsäkerhetskopior. Kontrollpunkt LSN Loggsekvensnummer för den senaste kontrollpunkten när säkerhetskopieringen skapades. fullständiga LSN- Loggsekvensnummer för den senaste fullständiga databassäkerhetskopian. Server Namnet på databasmotorinstansen som utförde säkerhetskopieringsåtgärden. användarnamn Namnet på den användare som utförde säkerhetskopieringen. Storlek Storleken på säkerhetskopieringen i byte. position Position för den säkerhetskopiering som angetts i volymen. förfallodatum Datum och tid då säkerhetskopieringsuppsättningen upphör att gälla. Välj något av följande alternativ:
tidpunkt
Behåll standardinställningen (Senaste möjligt), eller välj bläddrarknappen för att öppna dialogrutan Återställning till en tidpunkt och välj ett specifikt datum och tid.
Markerad transaktion
Återställ databasen till en tidigare markerad transaktion. Detta alternativ öppnar dialogrutan Välj markerad transaktion . Rutnätet i denna dialogruta listar de markerade transaktionerna i de valda transaktionslogg-backuperna.
Som standard går återställningsoperationen upp till, men exkluderar, den markerade transaktionen. För att inkludera den markerade transaktionen i återställningen, välj Inkludera markerad transaktion.
I följande tabell visas kolumnrubrikerna i rutnätet och deras värden beskrivs.
Rubrik Värde <tom> Visar en kryssruta för att markera märket. transaktionsmärke Namnet på den markerade transaktionen som angavs av användaren när transaktionen begicks. Datum Datum och tid för transaktionen när den genomfördes. Transaktionsdatum och -tid visas som registrerade i logmarkhistory-tabellen i msdb, inte enligt klientdatorns datum och tid. Beskrivning Beskrivning av den markerade transaktionen, om någon, specificerad av användaren när transaktionen genomfördes. LSN Loggsekvensnummer för den markerade transaktionen. Databas Namnet på databasen där den markerade transaktionen bekräftades. användarnamn Namnet på databasanvändaren som genomförde den markerade transaktionen.
Om du vill visa eller välja avancerade alternativ väljer du Alternativ i fönstret Välj en sida.
I avsnittet alternativ för återställning, välj bland följande alternativ:
Bevara replikeringsinställningarna (WITH KEEP_REPLICATION)
Bevarar replikeringsinställningarna när du återställer en publicerad databas till en annan server än den där databasen skapades.
Detta alternativ är endast tillgängligt med alternativet Lämna databasen redo att användas genom att rulla tillbaka icke-committade transaktioner... (beskrivs senare), vilket motsvarar att återställa en backup med alternativet RECOVERY.
Att välja detta alternativ är likvärdigt med att använda KEEP_REPLICATION-alternativet i en Transact-SQL-sats RESTORE.
Fråga innan du återställer varje säkerhetskopia
Innan varje säkerhetskopieringsuppsättning efter den första öppnas dialogrutan Fortsätt med Återställ , som frågar om du vill fortsätta återställningssekvensen. Dialogrutan visar namnet på nästa medieset (om tillgängligt), namnet på backup-setet och beskrivningen av backup-setet.
Detta alternativ är särskilt användbart när du måste byta band för olika medieuppsättningar, till exempel när servern bara har en bandenhet. Välj OK endast när du är redo att fortsätta.
Om du väljer Nej förblir databasen i återställningsläget. Du kan fortsätta återställningssekvensen senare, från den senaste återställningen som slutfördes. Om nästa säkerhetskopiering är en data- eller differentiell säkerhetskopia använder du uppgiften Återställ databas igen. Om nästa säkerhetskopia är en loggsäkerhetskopia använder du uppgiften Återställ transaktionsloggen.
Begränsa åtkomsten till den återställde databasen (WITH RESTRICTED_USER)
Gör den återställda databasen endast tillgänglig för medlemmar i db_owner, dbcreatoreller sysadmin.
Att välja detta alternativ motsvarar att använda RESTRICTED_USER-alternativet i en Transact-SQL-sats RESTORE.
Under återställningstillstånd, ange databasens tillstånd efter återställningsoperationen.
Låt databasen vara redo för användning genom att återställa ogenomförda transaktioner. Ytterligare transaktionsloggar kan inte återställas. (RESTORE MED ÅTERSTÄLLNING)
Återställer databasen. Detta alternativ motsvarar alternativet RECOVERY i en Transact-SQL-sats RESTORE.
Välj detta alternativ endast om du inte har några andra loggbackuper att återställa.
Låt databasen vara icke-operativ och rulla inte tillbaka icke-committade transaktioner. Ytterligare transaktionsloggar kan återställas. (RESTORE MED NORECOVERY)
Lämnar databasen oåterställd i tillståndet ÅTERSTÄLLA. Detta alternativ motsvarar att använda NORECOVERY-alternativet i en Transact-SQL-sats RESTORE.
När du väljer detta alternativ är alternativet Bevara replikeringsinställningarna inte tillgängligt.
Lämna databasen i skrivskyddat läge. Ångra ogenomförda transaktioner, men spara ångra-åtgärderna i en fil så att återställningseffekter kan ångras. (RESTORE MED VÄNTELÄGE)
Lämnar databasen i vänteläge. Detta alternativ motsvarar att använda STANDBY-alternativet i ett Transact-SQL-uttalande RESTORE .
Detta alternativ kräver en standby-fil.
Om du lämnar databasen i skrivskyddat läge, ange ett standby-filnamn i textrutan Standby-fil. Du kan bläddra efter standby-filen eller skriva dess sökväg i textrutan.
Använda Transact-SQL
Viktig
För att undvika tvetydighet, specificera uttryckligen antingen WITH NORECOVERY eller WITH RECOVERY i varje RESTORE-sats, särskilt i skript.
För varje transaktionsloggbackup före den sista i din återställningssekvens, kör en
RESTORE LOGsats med följande värden:- Namnet på databasen som transaktionsloggen ska tillämpas på.
- Backup-enheten som innehåller transaktionsloggens backup.
- Satsen
NORECOVERY.
Följande exempel visar den grundläggande syntaxen, där
<database_name>är namnet på databasen och<backup_device>är namnet på enheten som innehåller loggbackupen.RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY [ ; ]Om din återställningssekvens bara har en loggbackup, hoppa över detta steg.
För den sista loggbackupen i din återställningssekvens, använd en av följande metoder för att återställa databasen:
Återställ databasen som en del av den sista
RESTORE LOGsatsen:RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY; GOÅterställ databasen senare, med ett separat
RESTORE DATABASEkommando:RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY; RESTORE DATABASE <database_name> WITH RECOVERY; GODatabasen förblir i återställningsläget efter den senaste
RESTORE LOGinstruktionen. Du kan kontrollera att du återställt alla nödvändiga loggbackuper och sedan återställa databasen tillgänglig. Denna metod är ofta användbar vid en återställning till en viss tidpunkt.
Exempel (Transact-SQL)
Som standard använder AdventureWorks2025-databasen den enkla återställningsmodellen. Följande exempel kräver säkerhetskopior som tagits under full återställningsmodell. Innan du skapar dessa säkerhetskopior, kör följande instruktion för att ändra återställningsmodellen:
ALTER DATABASE AdventureWorks2025
SET RECOVERY FULL;
Övergången till fullständig återställningsmodell träder i kraft först efter den första databackupen. Ta en fullständig databasbackup för att starta loggkedjan.
Följande exempel återställer säkerhetskopiorna till en instans där databasen AdventureWorks2025 inte finns, på till exempel en annan server.
A. Använd en enda transaktionsloggbackup
Följande exempel återställer databasen AdventureWorks2025 från en fullständig databasbackup på en backupenhet som heter AdventureWorks2025_1. Den applicerar sedan den första transaktionsloggbackupen från en backupenhet som heter AdventureWorks2025_log. Slutligen återställer den databasen.
RESTORE DATABASE AdventureWorks2025
FROM AdventureWorks2025_1
WITH NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 1,
NORECOVERY;
GO
RESTORE DATABASE AdventureWorks2025
WITH RECOVERY;
GO
B. Tillämpa flera säkerhetskopior av transaktionsloggen
Följande exempel återställer databasen AdventureWorks2025 från en fullständig databasbackup på en backupenhet som heter AdventureWorks2025_1. Den applicerar sedan, en efter en, de tre första transaktionslogg-backuperna från en backup-enhet som heter AdventureWorks2025_log. Slutligen återställer den databasen.
RESTORE DATABASE AdventureWorks2025
FROM AdventureWorks2025_1
WITH NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 1,
NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 2,
NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 3,
NORECOVERY;
GO
RESTORE DATABASE AdventureWorks2025
WITH RECOVERY;
GO
Använda PowerShell
Använd Restore-SqlDatabase cmdleten och sätt parametern -RestoreAction till Log. Inkludera parametern -NoRecovery för varje återställning i sekvensen utom den sista. Utelämna -NoRecovery vid den senaste loggåterställningen för att återställa databasen.
Not
Dessa exempel kräver modulen SqlServer . Mer information finns i SQL Server PowerShell-provider.
För fullständig syntax, se Restore-SqlDatabase.
Exempel (PowerShell)
Följande exempel återställer säkerhetskopiorna till en instans där AdventureWorks2025-databasen inte finns, till exempel en annan server.
A. Använd en enda säkerhetskopia av transaktionsloggen
Följande exempel återställer databasen AdventureWorks2025 från en fullständig databasbackup, vilket lämnar databasen i återställningsläget. Den applicerar sedan en transaktionsloggbackup och återställer databasen.
$instance = "Computer\Instance"
$fullRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = "C:\Backup\AdventureWorks2025_full.bak"
RestoreAction = "Database"
NoRecovery = $true
}
Restore-SqlDatabase @fullRestore
$logRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = "C:\Backup\AdventureWorks2025_log1.trn"
RestoreAction = "Log"
}
Restore-SqlDatabase @logRestore
B. Tillämpa flera säkerhetskopior av transaktionsloggen
Följande exempel återställer hela databasbackupen och applicerar sedan tre transaktionslogg-backuper i följd. Varje återställning utom den sista använder -NoRecovery, så den senaste loggåterställningen återställer databasen tillgänglig.
$instance = "Computer\Instance"
$logBackups = @(
"C:\Backup\AdventureWorks2025_log1.trn",
"C:\Backup\AdventureWorks2025_log2.trn",
"C:\Backup\AdventureWorks2025_log3.trn"
)
$fullRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = "C:\Backup\AdventureWorks2025_full.bak"
RestoreAction = "Database"
NoRecovery = $true
}
Restore-SqlDatabase @fullRestore
for ($i = 0; $i -lt $logBackups.Count; $i++) {
$isLast = ($i -eq $logBackups.Count - 1)
$logRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = $logBackups[$i]
RestoreAction = "Log"
NoRecovery = -not $isLast
}
Restore-SqlDatabase @logRestore
}
Relaterade uppgifter
- Säkerhetskopiera en transaktionslogg
- Återställa en databassäkerhetskopia med SSMS-
- Återställa databasen till felpunkten – fullständig återställning
- Återställa en SQL Server-databas till en viss tidpunkt (fullständig återhämtningsmodell)
- Återställa en databas till en markerad transaktion (SQL Server Management Studio)