Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server-
Je kunt een back-up van een transactielog herstellen in SQL Server door gebruik te maken van SQL Server Management Studio, Transact-SQL of PowerShell.
Voorwaarden
Je moet back-ups herstellen in de volgorde waarin je ze hebt gemaakt. Voordat je een specifieke back-up van het transactielogboek herstelt, herstel je de volgende eerdere back-ups zonder niet-doorgevoerde transacties terug te draaien, door WITH NORECOVERY te gebruiken:
De volledige database-back-up en, optioneel, de laatste differentiële back-up die vóór die transactielog-back-up is genomen. De database moet het volledige of bulk-logged herstelmodel hebben gebruikt voordat de meest recente volledige of differentiële database-back-up werd gemaakt.
Alle back-ups van het transactielogboek die zijn gemaakt na de volledige database-back-up of de differentiële back-up (als je er een herstelt) en vóór die transactielogback-up. Je moet logback-ups toepassen in de volgorde waarin je ze hebt gemaakt, zonder gaten in de logketen.
Voor meer informatie over back-ups van transactielogs, zie Back-ups van transactielogs en Back-ups van transactielogs toepassen.
Machtigingen
Voor een bestaande database zijn de machtigingen standaard toegewezen aan leden van de sysadmin- en dbcreator-vaste serverrollen en de eigenaar (dbo) van de database.
RESTORE Machtigingen worden toegewezen aan rollen waarvan de server altijd het lidmaatschap kan controleren. De server kan het lidmaatschap van vaste databaserollen alleen controleren wanneer de database toegankelijk en onbeschadigd is, wat niet altijd het geval is wanneer RESTORE wordt uitgevoerd. Om deze reden hebben leden van de RESTORE vaste databaserol geen machtigingen.
Remarks
Voor een mirrordatabase, of een secundaire database van een availability group die je niet aan de availability group hebt gekoppeld, herstel de laatste logback-up met de NORECOVERY-optie (-NoRecovery in PowerShell). De database moet in de herstelfase blijven.
Voor een log shipping secundaire database, herstel de laatste logback-up met de NORECOVERY optie of de STANDBY optie (-StandbyFile in PowerShell). De STANDBY optie geeft alleen-lezen toegang tot de database tussen herstelbewerkingen.
SQL Server Management Studio gebruiken
Waarschuwing
Bij een typisch herstel selecteer je de logback-ups samen met de gegevens en differentiële back-ups in het venster Database herstellen .
Maak verbinding met de juiste instantie van de SQL Server Database Engine. Selecteer in Objectverkenner de servernaam om de serverboom uit te breiden.
Vouw databases uit. Selecteer een gebruikersdatabase, of vouw Systeemdatabases uit en selecteer een systeemdatabase.
Klik met de rechtermuisknop op de database, wijs naar Taken, wijs naar Herstellen en selecteer vervolgens Transactielogboek. Het dialoogvenster Transactielog herstellen wordt geopend.
Notitie
Als het transactielogboek niet beschikbaar is, moet je mogelijk eerst een volledige of differentiële back-up herstellen. Gebruik het dialoogvenster Database herstellen.
Selecteer op de General-pagina in het lijstvakje Database de database. De lijst toont alleen databases in de herstelstatus.
Om de bron en locatie van de te herstellende back-upsets te specificeren, kies je een van de volgende opties:
Van vorige back-ups van database
Selecteer de database die u wilt herstellen in de vervolgkeuzelijst. De lijst bevat alleen databases met back-ups die zijn vastgelegd in de back-upgeschiedenis van msdb.
Van bestand of tape
Selecteer de knop Bladeren (...) om het dialoogvenster Back-upapparaten selecteren te openen. Selecteer in het vakje 'Back-up mediatype ' een apparaattype. Om één of meer apparaten toe te voegen aan het vak Back-upmedia, selecteer je Toevoegen.
Nadat je de gewenste apparaten hebt toegevoegd, klik op OK om terug te keren naar de Algemeen-pagina.
Selecteer in de raster Selecteer de back-ups van het transactielogboek om te herstellen de back-ups die u wilt herstellen. Het raster geeft de back-ups van het transactielogboek weer die beschikbaar zijn voor de geselecteerde database. Het raster geeft logback-ups weer in de volgorde van de logsequentienummers (LSN's) die ze bevatten, en je moet ze in deze volgorde herstellen.
De volgende tabel bevat de kolomkoppen van het raster en beschrijft hun waarden.
Koptekst Waarde herstellen Aangevinkte selectievakjes geven de back-upsets aan die moeten worden hersteld. naam Naam van de back-upset. component Back-uponderdeel: Database, Fileof <lege> (voor transactielogboeken). Database Naam van de database die betrokken is bij de back-upbewerking. Begindatum De datum en tijd waarop de back-upbewerking is gestart, weergegeven in de regionale instelling van de client. einddatum De datum en tijd waarop de back-upbewerking is voltooid, weergegeven in de landinstelling van de client. eerste LSN- Logboekvolgordenummer van de eerste transactie in de back-upset. Leeg voor bestandsback-ups. laatste LSN- Logboekvolgordenummer van de laatste transactie in de back-upset. Leeg voor bestandsback-ups. controlepunt LSN Logboekvolgordenummer van het meest recente controlepunt op het moment dat de back-up is gemaakt. volledige LSN- Logboekvolgordenummer van de meest recente volledige databaseback-up. Server- Naam van het database-engine-exemplaar dat de back-upbewerking heeft uitgevoerd. gebruikersnaam Naam van de gebruiker die de back-upbewerking heeft uitgevoerd. grootte Grootte van de back-upset in bytes. positie Positie van de back-upset in het volume. verloopdatum De datum en tijd waarop de back-upset verloopt. Selecteer een van de volgende opties:
tijdstip
Houd de standaard (meest recent mogelijk), of selecteer de bladerknop om het venster Point in Time Restore te openen en selecteer een specifieke datum en tijd.
gemarkeerde transactie
Herstel de database naar een eerder gemarkeerde transactie. Deze optie opent het venster Select Marked Transaction. Het raster in dit dialoogvenster geeft de gemarkeerde transacties weer in de geselecteerde back-ups van het transactielogboek.
Standaard gaat de herstelbewerking tot aan, maar exclusief, de gemarkeerde transactie. Om de gemarkeerde transactie in het herstel op te nemen, selecteer Gemarkeerde transactie opnemen.
De volgende tabel bevat de kolomkoppen van het raster en beschrijft hun waarden.
Koptekst Waarde <lege> Hiermee wordt een selectievakje weergegeven voor het selecteren van de markering. transactiemarkeringen De naam van de gemarkeerde transactie die door de gebruiker is opgegeven toen de transactie werd doorgevoerd. datum Datum en tijd van de transactie waarop deze is doorgevoerd. Transactiedatum en -tijd worden weergegeven zoals vastgelegd in de logmarkhistory-tabel in MSDB, niet in de datum en tijd van de clientcomputer. beschrijving Beschrijving van de gemarkeerde transactie, indien aanwezig, gespecificeerd door de gebruiker bij het bevestigen van de transactie. LSN Logboekvolgordenummer van de gemarkeerde transactie. Database Naam van de database waar de gemarkeerde transactie is doorgevoerd. gebruikersnaam Naam van de databasegebruiker die de gemarkeerde transactie heeft doorgevoerd.
Als u de geavanceerde opties wilt weergeven of selecteren, selecteert u Opties in het deelvenster Selecteer een pagina.
Selecteer in de sectie Herstelopties uit de volgende opties:
Behoud de replicatie-instellingen (WITH KEEP_REPLICATION)
Behoudt de replicatie-instellingen wanneer je een gepubliceerde database herstelt naar een andere server dan degene waar de database is aangemaakt.
Deze optie is alleen beschikbaar met de optie 'Laat de database klaar voor gebruik door niet-gecommitteerde transacties terug te draaien... (later beschreven), wat gelijkstaat aan het herstellen van een back-up met de optie RECOVERY.
Het selecteren van deze optie is gelijk aan het gebruik van de KEEP_REPLICATION-optie in een Transact-SQL-statement RESTORE .
vragen voordat u elke back-up herstelt
Voor elke back-upset na de eerste opent deze optie het venster Doorgaan met Herstellen , waarin wordt gevraagd of je de herstelvolgorde wilt voortzetten. Het dialoogvenster toont de naam van de volgende mediaset (indien beschikbaar), de naam van de back-upset en de beschrijving van de back-upset.
Deze optie is vooral handig wanneer je tapes moet wisselen voor verschillende mediasets, bijvoorbeeld wanneer de server slechts één tapeapparaat heeft. Selecteer OK alleen als je klaar bent om verder te gaan.
Als je Nee selecteert, blijft de database in de herstelstatus. Je kunt later de herstelsequentie voortzetten, vanaf de laatste herstelbewerking die is voltooid. Als de volgende back-up een gegevens- of differentiële back-up is, gebruikt u de Database herstellen taak opnieuw. Als de volgende back-up een logboekback-up is, gebruikt u de taak Transactielog herstellen.
De toegang tot de herstelde database beperken (WITH RESTRICTED_USER)
Maakt de herstelde database alleen beschikbaar voor de leden van db_owner, dbcreatorof sysadmin.
Het selecteren van deze optie is gelijk aan het gebruik van de RESTRICTED_USER-optie in een Transact-SQL-statement RESTORE .
Onder Herstelstatus specificeert u de status van de database na de hersteloperatie.
Laat de database gereed voor gebruik door niet-doorgevoerde transacties terug te draaien. Extra transactielogs kunnen niet worden hersteld. (RESTORE MET HERSTELMOGELIJKHEID)
Hiermee herstelt u de database. Deze optie is gelijkwaardig aan de RECOVERY-optie in een Transact-SQL-statement RESTORE .
Kies deze optie alleen als je geen andere logback-ups hebt om te herstellen.
Laat de database buiten werking en draai niet-vastgelegde transacties niet terug. Aanvullende transactielogboeken kunnen worden hersteld. (RESTORE MET NORECOVERY)
Laat de database onhersteld, in de herstel toestand. Deze optie is gelijk aan het gebruik van de NORECOVERY-optie in een Transact-SQL-statement RESTORE .
Wanneer je deze optie kiest, is de optie Behoud van de replicatie-instellingen niet beschikbaar.
Laat de database in de modus Alleen-lezen staan. Ongedaan maken van niet-doorgevoerde transacties, maar de acties voor ongedaan maken in een bestand opslaan, zodat hersteleffecten kunnen worden omgekeerd. (RESTORE MET STAND-BY)
Laat de database in stand-bystatus staan. Deze optie is gelijk aan het gebruik van de STANDBY-optie in een Transact-SQL-instructie RESTORE .
Deze optie vereist een standby-bestand.
Als je de database in alleen-lezen-modus laat, geef dan een stand-by-bestandsnaam in het tekstvak Standby-bestand . Je kunt naar het stand-bybestand bladeren of het pad ervan in het tekstvak typen.
Gebruik Transact-SQL
Belangrijk
Om ambiguïteit te voorkomen, specificeer expliciet ofwel WITH NORECOVERY of WITH RECOVERY in elke RESTORE stelling, vooral in scripts.
Voor elke back-up van het transactielogboek vóór de laatste in je herstelsequentie, voer je een
RESTORE LOGinstructie uit met de volgende waarden:- De naam van de database waarop het transactielogboek moet worden toegepast.
- Het back-upapparaat dat de back-up van het transactielogboek bevat.
- De
NORECOVERY-clausule.
Het volgende voorbeeld toont de basissyntaxis, waarbij
<database_name>de naam van de database is en<backup_device>de naam van het apparaat dat de logback-up bevat.RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY [ ; ]Als je herstelsequentie maar één logback-up heeft, sla dan deze stap over.
Voor de laatste logback-up in uw herstelsequentie gebruikt u een van de volgende methoden om de database te herstellen:
Herstel de database als onderdeel van de laatste
RESTORE LOGinstructie:RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY; GOHerstel de database later, met een aparte
RESTORE DATABASEinstructie:RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY; RESTORE DATABASE <database_name> WITH RECOVERY; GODe database blijft na de laatste
RESTORE LOGinstructie in de herstelstatus. Je kunt controleren of je alle benodigde logback-ups hebt hersteld, en daarna de database herstellen. Deze aanpak is vaak nuttig voor een point-in-time-herstel.
Voorbeelden (Transact-SQL)
De AdventureWorks2025-database maakt standaard gebruik van het eenvoudige herstelmodel. De volgende voorbeelden vereisen back-ups die zijn gemaakt met het volledige herstelmodel. Voordat je die back-ups maakt, voer je de volgende instructie uit om het herstelmodel te wijzigen:
ALTER DATABASE AdventureWorks2025
SET RECOVERY FULL;
De overstap naar het volledige herstelmodel treedt pas in werking na de eerste data-back-up. Maak een volledige database-back-up om de logketen te starten.
De volgende voorbeelden herstellen de back-ups naar een instantie waar de AdventureWorks2025 database niet bestaat, bijvoorbeeld op een andere server.
Een. Pas een back-up van één transactielog toe
Het volgende voorbeeld herstelt de AdventureWorks2025 database van een volledige database-back-up op een back-upapparaat genaamd AdventureWorks2025_1. Vervolgens past het de eerste back-up van het transactielogboek toe van een back-upapparaat genaamd AdventureWorks2025_log. Ten slotte wordt de database hersteld.
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. Pas meerdere back-ups van transactielogboeken toe
Het volgende voorbeeld herstelt de AdventureWorks2025 database van een volledige database-back-up op een back-upapparaat genaamd AdventureWorks2025_1. Vervolgens worden er één voor één de eerste drie back-ups van het transactielogboekbestand toegepast van een back-upapparaat genaamd AdventureWorks2025_log. Ten slotte wordt de database hersteld.
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
Gebruik PowerShell
Gebruik de Restore-SqlDatabase cmdlet en stel de -RestoreAction parameter in op Log. Neem de -NoRecovery parameter op voor elke restore in de sequentie, behalve de laatste. Laat -NoRecovery weg bij het laatste logherstel om de database te herstellen.
Notitie
Deze voorbeelden vereisen de SqlServer module. Zie SQL Server PowerShell Providervoor meer informatie.
Raadpleeg Restore-SqlDatabase voor de volledige syntaxis.
Voorbeelden (PowerShell)
De volgende voorbeelden herstellen de back-ups naar een instantie waar de AdventureWorks2025 database niet bestaat, bijvoorbeeld op een andere server.
Een. Pas een back-up van één transactielog toe
Het volgende voorbeeld herstelt de AdventureWorks2025 database vanuit een volledige database-back-up, waardoor de database in de hersteltoestand blijft. Vervolgens wordt een back-up van het transactielogboek toegepast en de database hersteld.
$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. Meerdere back-ups van transactielogboeken toepassen
Het volgende voorbeeld herstelt de volledige database-back-up en past vervolgens drie transactielog-back-ups in volgorde toe. Elk herstel, behalve de laatste, gebruikt -NoRecovery, dus het laatste logherstel herstelt de database.
$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
}
Gerelateerde taken
- Een back-up maken van een transactielogboek
- een databaseback-up herstellen met behulp van SSMS-
- Database terugzetten naar het tijdstip van de storing - Volledig herstel
- een SQL Server-database herstellen naar een bepaald tijdstip (volledig herstelmodel)
- Een database herstellen naar een gemarkeerde transactie (SQL Server Management Studio)