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-
Bij een volledig databaseherstel is het doel om de hele database te herstellen. De hele database is offline voor de duur van de herstelbewerking. Voordat een deel van de database online kan komen, worden alle gegevens hersteld naar een consistent punt waarin alle onderdelen van de database zich op hetzelfde moment bevinden en er geen niet-doorgevoerde transacties bestaan.
Nadat u uw gegevensback-up of back-ups hebt hersteld, moet u onder het volledige herstelmodel alle volgende back-ups van transactielogboeken herstellen en vervolgens de database herstellen. U kunt een database herstellen naar een specifiek herstelpunt binnen een van deze logboekback-ups. Het herstelpunt kan een specifieke datum en tijd, een gemarkeerde transactie of een logboekreeksnummer (LSN) zijn.
Wanneer u een database herstelt, met name onder het volledige herstelmodel of het bulksgewijs vastgelegde herstelmodel, moet u één herstelvolgorde gebruiken. Een herstelvolgorde bestaat uit een of meer herstelbewerkingen die gegevens door een of meer van de fasen van het herstel verplaatsen.
Niet-vertrouwde bronnen
We raden u aan om databases niet te koppelen of herstellen vanuit onbekende of niet-vertrouwde bronnen. Deze databases kunnen schadelijke code bevatten die onbedoelde Transact-SQL code kan uitvoeren of fouten kan veroorzaken door het schema of de structuur van de fysieke database te wijzigen. Voordat u een database van een onbekende of niet-vertrouwde bron gebruikt, voert u DBCC CHECKDB- uit op de database op een niet-productieserver. Bekijk ook de door de gebruiker geschreven code in de database, zoals opgeslagen procedures of andere door de gebruiker gedefinieerde code.
Back-ups van eerdere versies
Zie de sectie Compatibiliteitsondersteuning van RESTORE (Transact-SQL)voor informatie over ondersteuning voor back-ups van eerdere versies van SQL Server.
Een database herstellen naar het foutpunt
Normaal gesproken omvat het herstellen van een database naar het foutpunt de volgende basisstappen:
Maak een back-up van het actieve transactielogboek (ook wel de staart van het logboek genoemd). Hiermee maakt u een back-up van tail-log. Als het actieve transactielogboek niet beschikbaar is, gaan alle transacties in dat deel van het logboek verloren.
Belangrijk
Onder het bulksgewijs vastgelegde herstelmodel moet u een back-up maken van logboeken die bulksgewijs vastgelegde bewerkingen bevatten, toegang nodig tot alle gegevensbestanden in de database. Als de gegevensbestanden niet kunnen worden geopend, kan er geen back-up van het transactielogboek worden gemaakt. In dat geval moet u alle wijzigingen die zijn aangebracht sinds de meest recente logboekback-up handmatig opnieuw uitvoeren.
Zie Tail-Log Back-ups (SQL Server)voor meer informatie.
Herstel de meest recente volledige databasebackup zonder de database te herstellen (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).
Als er differentiële back-ups bestaan, voert u het herstel van de meest recente back-up uit zonder de database volledig te herstellen (RESTORE DATABASE database_name FROM differential_backup_device WITH NORECOVERY).
Als u de meest recente differentiële back-up herstelt, vermindert u het aantal logboekback-ups dat moet worden hersteld.
Vanaf de eerste transactielogboekback-up die is gemaakt nadat de back-up die u zojuist hebt hersteld, herstelt u de logboeken in volgorde met NORECOVERY.
De database herstellen (RESTORE DATABASE database_name WITH RECOVERY). U kunt deze stap ook combineren met het herstellen van de laatste logboekback-up.
In de volgende afbeelding ziet u deze herstelvolgorde. Nadat er een fout is opgetreden (1), wordt er een back-up van het tail-logbestand gemaakt (2). Vervolgens wordt de database hersteld naar het punt van de fout. Dit omvat het herstellen van een databaseback-up, een daaropvolgende differentiële back-up en elke logback-up die na de differentiële back-up is gemaakt, inclusief de tail-logback-up.
Notitie
Wanneer u een database-back-up herstelt naar een andere serverinstantie, zie Databases kopiëren met back-up en herstellen.
Basic Transact-SQL RESTORE-syntaxis
De basissyntaxis RESTORETransact-SQL voor de herstelvolgorde in de vorige afbeelding is als volgt:
HERSTEL DATABASE database VAN volledige databaseback-up MET NORECOVERY;
DATABASE HERSTELLEN database FROM full_differential_backup WITH NORECOVERY;
HERSTEL LOG DATABASE VAN log_backup MET NORECOVERY;
Herhaal deze herstellogboekstap voor elke extra logboekback-up.
DATABASE HERSTELLEN database WITH RECOVERY;
Voorbeeld: herstellen tot het punt van falen (Transact-SQL)
In het volgende Transact-SQL voorbeeld ziet u de essentiële opties in een herstelvolgorde waarmee de database wordt hersteld naar het foutpunt. In het voorbeeld wordt er een tail-logback-up van de database gemaakt. Vervolgens herstelt het voorbeeld een volledige databaseback-up en een logboekback-up, en daarna herstelt het de tail-logback-up. In het voorbeeld wordt de database in een afzonderlijke, laatste stap hersteld.
Notitie
In dit voorbeeld worden een databaseback-up en een logboekback-up gebruikt, die zijn gemaakt in de sectie "Databaseback-ups gebruiken onder het volledige herstelmodel" in Volledige Databaseback-ups (SQL Server). Voordat de databaseback-up werd gemaakt, is de AdventureWorks2022
voorbeelddatabase ingesteld op het gebruik van het volledige herstelmodel.
USE master;
--Create tail-log backup.
BACKUP LOG AdventureWorks2022
TO DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'
WITH NORECOVERY;
GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks2022
FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'
WITH FILE=1,
NORECOVERY;
--Restore the regular log backup (from backup set 2).
RESTORE LOG AdventureWorks2022
FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'
WITH FILE=2,
NORECOVERY;
--Restore the tail-log backup (from backup set 3).
RESTORE LOG AdventureWorks2022
FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'
WITH FILE=3,
NORECOVERY;
GO
--recover the database:
RESTORE DATABASE AdventureWorks2022 WITH RECOVERY;
GO
Een database herstellen naar een specifiek punt binnen een logboekback-up
Onder het volledige herstelmodel kan een volledig databaseherstel meestal worden hersteld naar een bepaald tijdstip, een gemarkeerde transactie of een LSN binnen een logboekback-up. Bij het bulk-gelogde herstelmodel is herstel naar een bepaald tijdstip niet mogelijk als de logboekback-up bulksgewijs vastgelegde wijzigingen bevat.
Voorbeeldscenario's voor herstel op een specifiek tijdstip
In het volgende voorbeeld wordt ervan uitgegaan dat een bedrijfskritiek databasesysteem waarvoor dagelijks een volledige databaseback-up wordt gemaakt om middernacht, een differentiële databaseback-up wordt gemaakt op het uur, maandag tot en met zaterdag en back-ups van transactielogboeken elke 10 minuten gedurende de dag worden gemaakt. Ga als volgt te werk om de database te herstellen naar de status van 5:19 uur 's ochtends op woensdag:
Herstel de volledige databaseback-up die dinsdag om middernacht is gemaakt.
Herstel de differentiële databasebackup die op woensdag om 5:00 uur is gemaakt.
Pas de back-up van het transactielogboek toe die op woensdag om 5:10 uur is gemaakt.
Pas de back-up van het transactielogboek toe die op woensdag 5:20 uur is gemaakt en geef aan dat het herstelproces alleen van toepassing is op transacties die vóór 5:19 uur zijn opgetreden.
Als de database op donderdag om 3:04 uur moet worden hersteld, maar de differentiële databaseback-up die op donderdag om 3:00 uur is gemaakt niet beschikbaar is, handel als volgt:
Herstel de databaseback-up die woensdag om middernacht is gemaakt.
Herstel de differentiële database-backup die is gemaakt om 02:00 uur op donderdag.
Pas alle back-ups van het transactielogboek toe die zijn gemaakt van 2:10 tot 3:00 uur op donderdag.
Pas de back-up van het transactielogboek toe die is gemaakt om 3:10 uur op donderdag, waardoor het herstelproces om 3:04 uur wordt gestopt.
Notitie
Zie Een SQL Server-database herstellen naar een bepaald tijdstip (volledig herstelmodel)voor een voorbeeld van een herstel naar een bepaald tijdstip.
Gerelateerde taken
Een volledige back-up van een database herstellen
Een back-up van een differentiële database herstellen
Een back-up van een transactielogboek herstellen
Een back-up herstellen met behulp van SMO- (SQL Server Management Objects)
Een database herstellen tot een bepaald punt binnen een logback-up
een SQL Server-database herstellen naar een bepaald tijdstip (volledig herstelmodel)
Herstel van gerelateerde databases die een gemarkeerde transactie bevatten
Zie ook
RESTORE (Transact-SQL)
BACKUP (Transact-SQL)
Back-ups van transactielogboeken (SQL Server) toepassen
sp_addumpdevice (Transact-SQL)
volledige databaseback-ups (SQL Server)
differentiële back-ups (SQL Server)
Overzicht van Backup (SQL Server)
Overzicht van Herstellen en Herstel (SQL Server)