Overzicht van herstellen en herstelprocedures (SQL Server)
van toepassing op:SQL Server-
Dit artikel bevat een overzicht van het herstel- en herstelproces van de database voor SQL Server.
Als u een SQL Server-database wilt herstellen na een fout, moet een databasebeheerder een set SQL Server-back-ups herstellen in een logisch juiste en zinvolle herstelvolgorde. Het herstel- en herstelproces van SQL Server biedt ondersteuning voor het herstellen van gegevens uit back-ups van een hele database, een gegevensbestand of een gegevenspagina, als volgt:
De database (een volledig databaseherstel)
De hele database wordt teruggezet en hersteld, en de database is offline tijdens de terugzet- en herstelbewerkingen.
Het gegevensbestand (een bestand herstellen)
Een gegevensbestand of een set bestanden wordt hersteld en teruggehaald. Tijdens het herstellen van bestanden worden de bestandsgroepen die de bestanden bevatten, automatisch offline tijdens het herstellen. Elke poging om toegang te krijgen tot een offlinebestandsgroep veroorzaakt een fout.
De gegevenspagina (een herstelpagina )
Onder het volledige herstelmodel of bulksgewijs vastgelegde herstelmodel kunt u afzonderlijke pagina's herstellen. Paginaherstel kan worden uitgevoerd op elke database, ongeacht het aantal bestandsgroepen.
Back-ups en herstelprocedures van SQL Server werken op alle ondersteunde besturingssystemen. Zie Hardware- en softwarevereistenvoor meer informatie over de ondersteunde besturingssystemen. Zie de sectie Compatibiliteitsondersteuning van RESTORE-voor informatie over ondersteuning voor back-ups van eerdere versies van SQL Server.
Een herstelscenario in SQL Server is het proces van het herstellen van gegevens uit een of meer back-ups en vervolgens het herstellen van de database. De ondersteunde herstelscenario's zijn afhankelijk van het herstelmodel van de database en de editie van SQL Server.
In de volgende tabel worden de mogelijke herstelscenario's geïntroduceerd die worden ondersteund voor verschillende herstelmodellen.
Herstelscenario | Onder eenvoudig herstelmodel | Onder volledig/bulksgewijs vastgelegde herstelmodellen |
---|---|---|
Databaseherstel voltooien | De basisstrategie voor herstel. Een volledig databaseherstel kan inhouden dat een volledige databaseback-up wordt hersteld en teruggezet. Een volledig databaseherstel kan ook betrekking hebben op het herstellen van een volledige databaseback-up, gevolgd door het herstellen en terugzetten van een differentiële back-up. Zie Databaseherstelbewerkingen (Simple Recovery Model) voltooienvoor meer informatie. |
De basisstrategie voor herstel. Een volledig databaseherstel omvat het herstellen van een volledige databaseback-up en eventueel een differentiële back-up (indien aanwezig), gevolgd door het herstellen van alle volgende logboekback-ups (in volgorde). Het volledige databaseherstel is voltooid door de laatste logboekback-up te herstellen en deze ook te herstellen (RESTORE WITH RECOVERY). Zie Volledige databaseherstelbewerkingen (volledig herstelmodel) voor meer informatie |
Bestandsherstel 1 | Herstel een of meer beschadigde bestanden met het kenmerk Alleen-lezen, zonder de volledige database te herstellen. Bestandsherstel is alleen beschikbaar als de database ten minste één alleen-lezen bestandsgroep heeft. | Hiermee herstelt u een of meer bestanden, zonder de hele database te herstellen. Bestandsherstel kan worden uitgevoerd terwijl de database offline is of, voor sommige edities van SQL Server, terwijl de database online blijft. Tijdens het herstellen van bestanden zijn de bestandsgroepen die de bestanden bevatten die worden hersteld, altijd offline. |
Pagina herstellen | Niet van toepassing | Hiermee herstelt u een of meer beschadigde pagina's. Paginaherstel kan worden uitgevoerd terwijl de database offline is of, voor sommige edities van SQL Server, terwijl de database online blijft. Tijdens het herstellen van een pagina zijn de pagina's die worden hersteld, altijd offline. Er moet een ononderbroken keten van logboekback-ups beschikbaar zijn tot aan het huidige logboekbestand, en ze moeten allemaal worden toegepast om de pagina up-toup-to-date te brengen met het huidige logboekbestand. Zie Pagina's herstellen (SQL Server)voor meer informatie. |
Gedeeltelijk herstellen 1 | Herstellen en herstel de database in fasen op bestandsgroepniveau, te beginnen met de primaire en alle lees-/schrijfbare, secundaire bestandsgroepen. | Herstel en herstel de database in fasen op bestandsgroepniveau, te beginnen met de primaire bestandsgroep. Zie Piecemeal Restores (SQL Server) voor meer informatie |
1 Online herstellen wordt alleen ondersteund in Enterprise Edition.
Als u een bestandsherstel wilt uitvoeren, voert de database-engine twee stappen uit:
Hiermee worden eventuele ontbrekende databasebestanden gemaakt.
Kopieert de gegevens van de back-upapparaten naar de databasebestanden.
Als u een databaseherstel wilt uitvoeren, voert de database-engine drie stappen uit:
Hiermee maakt u de database- en transactielogboekbestanden als deze nog niet bestaan.
Kopieert alle gegevens, logboeken en indexpagina's van de back-upmedia van een database naar de databasebestanden.
Past het transactielogboek toe, in wat bekend staat als het herstelproces.
Ongeacht hoe gegevens worden hersteld, zorgt de SQL Server Database Engine ervoor dat de hele database logisch consistent is voordat een database kan worden hersteld. Als u bijvoorbeeld een bestand herstelt, kunt u het niet herstellen en online brengen totdat het ver genoeg vooruit wordt gerold om consistent te zijn met de database.
Het herstellen en herstellen van bestanden of pagina's, in plaats van de hele database, biedt de volgende voordelen:
Het herstellen van minder gegevens vermindert de tijd die nodig is om deze te kopiëren en te herstellen.
Bij het herstellen van bestanden of pagina's op SQL Server kunnen andere gegevens in de database online blijven tijdens de herstelbewerking.
Voor de meeste herstelscenario's is het noodzakelijk om een back-up van transactielogboeken toe te passen en de SQL Server Database Engine toe te staan het herstelproces uit te voeren om de database online te brengen. Herstel is het proces dat door SQL Server wordt gebruikt voor elke database om te beginnen met een transactioneel consistente of schone status.
Als er een failover of een andere niet-schone afsluiting is, blijven de databases mogelijk in een toestand waarin sommige wijzigingen nooit uit de buffercache naar de gegevensbestanden zijn geschreven, en er kunnen enkele wijzigingen zijn ten opzichte van onvolledige transacties in de gegevensbestanden. Wanneer een exemplaar van SQL Server wordt gestart, wordt een herstel uitgevoerd van elke database, die uit drie fasen bestaat, op basis van het laatste databasecontrolepunt:
fase 1 is de analyserende fase waarmee het transactielogboek wordt geanalyseerd om het laatste controlepunt te bepalen en worden de Dirty Page Table (DPT) en de Active Transaction Table (ATT) gemaakt. De DPT bevat records van pagina's die vuil waren op het moment dat de database werd afgesloten. De ATT bevat records van transacties die actief waren op het moment dat de database niet op schone wijze werd afgesloten.
fase 2 is de Redo-fase waarin elke wijziging die is vastgelegd in het logboek, wordt verwerkt als deze mogelijk niet naar de gegevensbestanden is geschreven op het moment dat de database werd afgesloten. De minimaal logboekreeksnummer (minLSN) dat is vereist voor een geslaagde databasebrede herstel, wordt gevonden in de DPT en markeert het begin van de herstelbewerkingen die nodig zijn voor alle ongeschreven pagina's. In deze fase schrijft de SQL Server Database Engine naar de schijf alle vuile pagina's die behoren tot vastgelegde transacties.
fase 3 is de Ongedaanmaakfase waarin onvolledige transacties in de ATT worden teruggedraaid om ervoor te zorgen dat de integriteit van de database behouden blijft. Na een rollback komt de database online en kunnen er geen back-ups van transactielogboeken meer op de database worden toegepast.
Informatie over de voortgang van elke databaseherstelfase wordt vastgelegd in het foutenlogboek van SQL Server . De voortgang van het databaseherstel kan ook worden bijgehouden met behulp van uitgebreide gebeurtenissen. Zie de blogpost Nieuwe uitgebreide gebeurtenissen voor de voortgang van databaseherstelvoor meer informatie.
Notitie
Als een alleen-lezen bestandsgroep sinds voordat de back-up van het bestand werd gemaakt, alleen-lezen is, is het toepassen van logboekback-ups op de bestandsgroep overbodig en wordt deze overgeslagen door bestandsherstel.
Notitie
Als u de beschikbaarheid van databases in een bedrijfsomgeving wilt maximaliseren nadat de SQL Server-service is gestart, zoals na een failover van een Always On failover cluster-instantie of een in-place herstart, kan SQL Server Enterprise Edition een database online brengen na de Redo-fase, terwijl de Undo-fase nog steeds wordt uitgevoerd. Dit staat bekend als Fast Recovery. Fast Recovery is echter niet beschikbaar wanneer de database overgaat naar een onlinestatus, maar de SQL Server-service niet opnieuw is opgestart. Als u bijvoorbeeld ALTER DATABASE AdventureWorks SET ONLINE;
uitvoert, kan de database pas in de lees-schrijfmodus zijn als alle drie de herstelfasen zijn voltooid.
De herstelbewerkingen die beschikbaar zijn voor een database, zijn afhankelijk van het herstelmodel. In de volgende tabel wordt samengevat of en in welke mate elk van de herstelmodellen een bepaald herstelscenario ondersteunt.
Herstelbewerking | Model voor volledig herstel | Bulksgewijs vastgelegde herstelmodel | Eenvoudig herstelmodel |
---|---|---|---|
Gegevensherstel | Herstel voltooien (als het logboek beschikbaar is). | Enige blootstelling aan gegevensverlies. | Alle gegevens sinds de laatste volledige of differentiële back-up gaan verloren. |
Herstel naar een bepaald tijdstip | Elk moment gedekt door de logboekback-ups. | Niet toegestaan als de logboekback-up bulksgewijs vastgelegde wijzigingen bevat. | Niet ondersteund. |
Bestandsherstel 1 | Volledige ondersteuning. | Soms. 2 | Alleen beschikbaar voor secundaire bestanden met het kenmerk Alleen-lezen. |
Paginaherstel 1 | Volledige ondersteuning. | Soms. 2 | Geen. |
Stapsgewijs herstel op bestandsgroepniveau 1 | Volledige ondersteuning. | Soms. 2 | Alleen beschikbaar voor secundaire bestanden met het kenmerk Alleen-lezen. |
1 alleen beschikbaar in de Enterprise-editie van SQL Server
2 Zie Herstelbeperkingen onder het Simple Recovery Modelverderop in dit artikel voor de vereiste voorwaarden.
Belangrijk
Ongeacht het herstelmodel van een database, kan een BACK-up van SQL Server niet worden hersteld naar een SQL Server Database Engine-versie die ouder is dan de versie die de back-up heeft gemaakt.
Het eenvoudige herstelmodel legt de volgende beperkingen op voor herstelbewerkingen:
Bestandsherstel en stapsgewijs herstellen zijn alleen beschikbaar voor alleen-lezen secundaire bestandsgroepen. Zie Bestand herstellen (Simple Recovery Model) en Piecemeal Restores (SQL Server)voor meer informatie over deze herstelscenario's.
Het terugzetten van pagina's is niet toegestaan.
Herstel naar een bepaald tijdstip is niet toegestaan.
Als een van deze beperkingen ongepast is voor uw herstelbehoeften, raden we u aan om het volledige herstelmodel te gebruiken. Zie Back-upoverzicht (SQL Server)voor meer informatie.
Belangrijk
Ongeacht het herstelmodel van een database, kan een BACK-up van SQL Server niet worden hersteld door een versie van SQL Server die ouder is dan de versie die de back-up heeft gemaakt.
In deze sectie worden hersteloverwegingen besproken die uniek zijn voor het bulksgewijs vastgelegde herstelmodel. Dit is uitsluitend bedoeld als aanvulling op het volledige herstelmodel.
Notitie
Zie Het transactielogboekvoor een inleiding tot het bulksgewijs vastgelegde herstelmodel.
Over het algemeen is het bulksgewijs vastgelegde herstelmodel vergelijkbaar met het volledige herstelmodel en de informatie die wordt beschreven voor het volledige herstelmodel, is ook van toepassing op beide. Herstel naar een bepaald tijdstip en online herstel worden echter beïnvloed door het bulksgewijs vastgelegde herstelmodel.
Als een logboekback-up die is gemaakt onder het bulksgewijs vastgelegde herstelmodel bulksgewijs vastgelegde wijzigingen bevat, is herstel naar een bepaald tijdstip niet toegestaan. Als u probeert een point-in-time herstel uit te voeren op een logboekback-up die bulkwijzigingen bevat, mislukt de herstelbewerking.
Een online herstelvolgorde werkt alleen als aan de volgende voorwaarden wordt voldaan:
Alle vereiste logboekback-ups moeten zijn gemaakt voordat de herstelreeks wordt gestart.
Bulkwijzigingen moeten worden geback-upt voordat u het online herstelproces start.
Als er bulkwijzigingen in de database aanwezig zijn, moeten alle bestanden online zijn of defunct (dat wil gezegd, geen deel meer uitmaken van de database).
Als niet aan deze voorwaarden wordt voldaan, mislukt de onlineherstelvolgorde.
Notitie
U wordt aangeraden over te schakelen naar het volledige herstelmodel voordat u een online herstelbewerking start. Zie Recovery-modellen (SQL Server)voor meer informatie.
Zie online herstellen (SQL Server) voor informatie over het uitvoeren van een online herstelbewerking.
Database Recovery Advisor vereenvoudigt het samenstellen van herstelplannen die optimale juiste herstelreeksen implementeren. Veel bekende problemen met het herstellen van databases en verbeteringen die door klanten zijn aangevraagd, zijn opgelost. Belangrijke verbeteringen die door de Database Recovery Advisor zijn geïntroduceerd, zijn onder andere:
algoritme restore-plan: Het algoritme dat wordt gebruikt om herstelplannen samen te stellen, is aanzienlijk verbeterd, met name voor complexe herstelscenario's. Veel randgevallen, waaronder vertakkingsscenario's in herstel naar een bepaald tijdstip, worden efficiënter verwerkt dan in eerdere versies van SQL Server.
Herstel naar een bepaald tijdstip: De Database Recovery Advisor vereenvoudigt aanzienlijk het herstellen van een database naar een bepaald tijdstip. Een visuele back-up tijdlijn verbetert de ondersteuning voor herstel naar een bepaald tijdstip aanzienlijk. Met deze visuele tijdlijn kunt u een haalbaar tijdstip identificeren als het doelherstelpunt voor het herstellen van een database. De tijdlijn vereenvoudigt het doorlopen van een vertakt herstelpad (een pad dat uit meerdere herstelforken bestaat). Een bepaald herstelplan voor een bepaald tijdstip bevat automatisch de back-ups die relevant zijn voor het herstellen naar het doelpunt in de tijd (datum en tijd). Zie Een SQL Server-database herstellen naar een bepaald tijdstip (volledig herstelmodel)voor meer informatie.
Zie de volgende sql Server-beheerbaarheidsblogs voor meer informatie over Database Recovery Advisor:
ADR- (Versneld databaseherstel) is beschikbaar vanaf SQL Server 2019 (15.x). ADR is ook beschikbaar in Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics (alleen toegewezen SQL-pool) en SQL-database in Microsoft Fabric. Versneld databaseherstel verbetert de beschikbaarheid van databases aanzienlijk, met name in aanwezigheid van langlopende transacties, door het herstelproces van de SQL Server Database Engine opnieuw vorm te geven . Een database waarvoor ADR is ingeschakeld, voltooit het herstelproces aanzienlijk sneller na een failover of een ander onverwacht afsluiten. Wanneer ADR is ingeschakeld, wordt het terugdraaien van geannuleerde langlopende transacties onmiddellijk voltooid.
U kunt ADR per database inschakelen in SQL Server 2019 (15.x) en latere versies met behulp van de volgende syntaxis:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;
Notitie
ADR is altijd ingeschakeld in Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics (alleen toegewezen SQL-pool) en SQL-database in Microsoft Fabric.