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-
In dit onderwerp wordt beschreven hoe u pagina's in SQL Server herstelt met behulp van SQL Server Management Studio of Transact-SQL. Het doel van een paginaherstel is om een of meer beschadigde pagina's te herstellen zonder de hele database te herstellen. Pagina's die geschikt zijn voor herstel, zijn doorgaans gemarkeerd als 'verdacht' vanwege een fout die is opgetreden bij het openen van de pagina. Verdachte pagina's worden geïdentificeerd in de tabel suspect_pages in de msdb-database.
In Dit Onderwerp
Voordat u begint:
Pagina's herstellen met behulp van:
Voordat u begint
Wanneer is een pagina herstellen nuttig?
Een paginaherstel is bedoeld voor het herstellen van geïsoleerde beschadigde pagina's. Het herstellen en herstellen van een paar afzonderlijke pagina's kan sneller zijn dan het herstellen van bestanden, waardoor de hoeveelheid gegevens die offline is tijdens een herstelbewerking, wordt verminderd. Als u echter meer dan een paar pagina's in een bestand moet herstellen, is het over het algemeen efficiënter om het hele bestand te herstellen. Als een groot aantal pagina's op een apparaat bijvoorbeeld aangeeft dat er een dreigend defect is, kunt u overwegen het bestand te herstellen, mogelijk naar een andere locatie, en het apparaat te repareren.
Bovendien vereisen niet alle paginafouten een herstelbewerking. Een probleem kan optreden in gegevens in de cache, zoals een secundaire index, die kan worden opgelost door de gegevens opnieuw te berekenen. Als de databasebeheerder bijvoorbeeld een secundaire index laat vallen en opnieuw bouwt, worden de beschadigde gegevens, hoewel opgelost, niet als zodanig aangegeven in de suspect_pages tabel.
Beperkingen en beperkingen
Paginaherstel is van toepassing op SQL Server-databases die gebruikmaken van de volledige of bulksgewijs vastgelegde herstelmodellen. Paginaherstel wordt alleen ondersteund voor lees-/schrijfbestandsgroepen.
Alleen databasepagina's kunnen worden hersteld. Paginaherstel kan niet worden gebruikt om het volgende te herstellen:
Transactielogboek
Toewijzingspagina's: Global Allocation Map (GAM)-pagina's, Shared Global Allocation Map (SGAM)-pagina's, en Page Free Space (PFS)-pagina's.
Pagina 0 van alle gegevensbestanden (de opstartpagina van het bestand)
Pagina 1:9 (de opstartpagina van de database)
Catalogus met volledige tekst
Voor een database die gebruikmaakt van het bulksgewijs vastgelegde herstelmodel, heeft paginaherstel de volgende aanvullende voorwaarden:
Het maken van back-ups terwijl bestandsgroep- of paginagegevens offline zijn, is problematisch voor bulksgewijs vastgelegde gegevens, omdat de offlinegegevens niet worden vastgelegd in het logboek. Elke offlinepagina kan een back-up van het logboek voorkomen. In dit geval kunt u DBCC REPAIR gebruiken, omdat dit minder gegevensverlies kan veroorzaken dan herstellen naar de meest recente back-up.
Als een logboekback-up van een bulksgewijs geregistreerde database een ongeldige pagina tegenkomt, mislukt deze, tenzij WITH CONTINUE_AFTER_ERROR is opgegeven.
Het herstellen van pagina's werkt doorgaans niet met bulksgewijs vastgelegde herstelbewerkingen.
Een aanbevolen procedure voor het uitvoeren van paginaherstel is het instellen van de database op het volledige herstelmodel en het maken van een logboekback-up. Als de logboekback-up werkt, kunt u doorgaan met het herstellen van de pagina. Als de back-up van het logboek mislukt, moet u ofwel werk verliezen sinds de vorige logboekback-up, of u moet proberen DBCC uit te voeren met de optie REPAIR_ALLOW_DATA_LOSS.
Aanbevelingen
Scenario's voor paginaherstel:
Offlinepagina herstellen
Alle edities van SQL Server ondersteunen het herstellen van pagina's wanneer de database offline is. Bij een offline pagina herstellen is de database offline terwijl beschadigde pagina's worden hersteld. Aan het einde van de herstelvolgorde is de database online.Online pagina herstellen
SQL Server Enterprise Edition ondersteunt online paginaherstel, hoewel ze offline herstellen gebruiken als de database momenteel offline is. In de meeste gevallen kan een beschadigde pagina worden hersteld terwijl de database online blijft, inclusief de bestandsgroep waarnaar een pagina wordt hersteld. Wanneer de primaire bestandsgroep online is, zelfs als een of meer secundaire bestandsgroepen offline zijn, worden paginaherstelbewerkingen meestal online uitgevoerd. Soms kan echter een beschadigde pagina een offline herstel vereisen. Schade aan bepaalde kritieke pagina's kan bijvoorbeeld verhinderen dat de database wordt gestart.Waarschuwing
Als beschadigde pagina's kritieke databasemetagegevens opslaan, kunnen vereiste updates voor metagegevens mislukken tijdens een online paginaherstelpoging. In dit geval kunt u offline paginaherstel uitvoeren, maar eerst moet u een tail-logboekback-up maken (door een back-up van het transactielogboek te maken met RESTORE WITH NORECOVERY).
Paginaherstel maakt gebruik van de verbeterde foutrapportage op paginaniveau (inclusief paginacontroles) en het bijhouden van gegevens. Beschadigde pagina's, gedetecteerd door checksum-controle of een incomplete schrijfbewerking, beschadigde pagina's, kunnen worden hersteld door een paginaherstelbewerking. Alleen expliciet opgegeven pagina's worden hersteld. Elke opgegeven pagina wordt vervangen door de kopie van die pagina uit de opgegeven gegevensback-up.
Wanneer u de volgende logboekback-ups herstelt, worden ze alleen toegepast op databasebestanden die ten minste één pagina bevatten die wordt hersteld. Er moet een niet-verbroken keten van logboekback-ups worden toegepast op de laatste volledige of differentiële herstelbewerking om de bestandsgroep met de pagina door te sturen naar het huidige logboekbestand. Net als bij het herstellen van bestanden, wordt de roll forward-set voortgezet met een enkele logboek-herhaling. Als een pagina kan worden hersteld, moeten de herstelde pagina's worden hersteld naar een status die consistent is met de database.
Veiligheid
Machtigingen
Als de database die wordt hersteld niet bestaat, moet de gebruiker CREATE DATABASE-machtigingen hebben om RESTORE uit te kunnen voeren. Als de database bestaat, worden RESTORE-machtigingen standaard gegeven aan leden van de vaste serverfuncties sysadmin en dbcreator, en de eigenaar (dbo) van de database. Voor de optie FROM DATABASE_SNAPSHOT bestaat de database altijd.
HERSTELmachtigingen worden gegeven aan rollen waarin lidmaatschapsgegevens altijd direct beschikbaar zijn voor de server. Omdat lidmaatschap van een vaste databaserol alleen kan worden gecontroleerd wanneer de database toegankelijk en onbeschadigd is, wat niet altijd het geval is wanneer RESTORE wordt uitgevoerd, hebben leden van de db_owner vaste databaserol geen MACHTIGINGEN VOOR HERSTELLEN.
SQL Server Management Studio gebruiken
Vanaf SQL Server 2016 (13.x) ondersteunt SQL Server Management Studio herstel van pagina's.
Pagina's herstellen
Maak verbinding met het juiste exemplaar van de SQL Server Database Engine en klik in Objectverkenner op de servernaam om de serverstructuur uit te vouwen.
Vouw Databasesuit. Afhankelijk van de database selecteert u een gebruikersdatabase of vouwt u Systeemdatabasesuit en selecteert u vervolgens een systeemdatabase.
Klik met de rechtermuisknop op de database, wijs Takenaan, wijs Herstellenaan en klik vervolgens op Pagina, waarmee het dialoogvenster Herstellenpagina wordt geopend.
herstellen
In deze sectie wordt dezelfde functie uitgevoerd als die van Herstellen naar op de Database herstellen (algemene pagina).Database
Hiermee geeft u de database die moet worden hersteld. U kunt een nieuwe database invoeren of een bestaande database selecteren in de vervolgkeuzelijst. De lijst bevat alle databases op de server, met uitzondering van de systeemdatabases hoofd- en tempdb-.Waarschuwing
Als u een met een wachtwoord beveiligde back-up wilt herstellen, moet u de instructie RESTORE gebruiken.
Tail-Log backup
Voer een bestandsnaam in of selecteer er een in Back-upapparaat waar de tail-log back-up wordt opgeslagen voor de database.Back-upsets
In deze sectie worden de back-upsets weergegeven die betrokken zijn bij het herstellen.Koptekst Waarden naam De naam van de back-upset. Component Het onderdeel waarvan een back-up is gemaakt: Database, Bestandof <lege> (voor transactielogboeken). type Het type back-up dat wordt uitgevoerd: volledige, differentiëleof transactielogboek. Server De naam van het database-engine-exemplaar dat de back-upbewerking heeft uitgevoerd. Database De naam van de database die betrokken is bij de back-upbewerking. positie De positie van de back-upset in het volume. eerste LSN- Het logboekreeksnummer (LSN) van de eerste transactie in de back-upset. Leeg voor bestandsback-ups. Laatste LSN Het logboekreeksnummer (LSN) van de laatste transactie in de back-upset. Leeg voor bestandsback-ups. Controlepunt LSN Het logboekreeksnummer (LSN) van het meest recente controlepunt op het moment dat de back-up is gemaakt. volledige LSN- Het logboekreeksnummer (LSN) van de meest recente volledige databaseback-up. 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. Grootte De grootte van de back-upset in bytes. gebruikersnaam De naam van de gebruiker die de back-upbewerking heeft uitgevoerd. verloopdatum De datum en tijd waarop de backupset verloopt. Klik op Controleer om de integriteit van de back-upbestanden te controleren die nodig zijn om de herstelbewerking van de pagina uit te voeren.
Als de juiste database in het vak Database is geselecteerd, klikt u op Databasepagina's controlerenom beschadigde pagina's te identificeren. Dit is een langdurige bewerking.
Waarschuwing
Als u specifieke pagina's wilt herstellen die niet beschadigd zijn, klikt u op Toevoegen en voert u de bestands-id in en pagina-id van de pagina's die moeten worden hersteld.
Het paginaraster wordt gebruikt om de pagina's te identificeren die moeten worden hersteld. In eerste instantie wordt dit raster gevuld vanuit de suspect_pages systeemtabel. Als u pagina's uit het raster wilt toevoegen of verwijderen, klikt u op Toevoegen of verwijderen. Zie voor meer informatie De suspect_pages Table (SQL Server) beheren.
De Back-upsets raster bevat de back-upsets in het standaardherstelplan. Klik eventueel op Controleer om te controleren of de back-ups leesbaar zijn en of de back-upsets zijn voltooid, zonder ze te herstellen. Zie RESTORE VERIFYONLY (Transact-SQL)voor meer informatie.
Pagina's
Als u de pagina's in het paginaraster wilt herstellen, klikt u op OK.
Transact-SQL gebruiken
Als u een pagina in een INSTRUCTIE RESTORE DATABASE wilt opgeven, hebt u de bestands-ID van het bestand dat de pagina bevat en de pagina-ID van de pagina nodig. De vereiste syntaxis is als volgt:
RESTORE DATABASE <database_name>
PAGE = '<file: page> [ ,... n ] ' [ ,... n ]
FROM <backup_device> [ ,... n ]
WITH NORECOVERY
Voor meer informatie over de parameters van de PAGE-optie, zie RESTORE-argumenten (Transact-SQL). Zie RESTORE (Transact-SQL)voor meer informatie over de syntaxis van de RESTORE DATABASE.
Pagina's herstellen
Haal de pagina-id's op van de beschadigde pagina's die moeten worden hersteld. Een controlesom of fout bij gescheurd schrijven retourneert pagina-ID en geeft de informatie die nodig is om de pagina's te specificeren. Als u de pagina-id van een beschadigde pagina wilt opzoeken, gebruikt u een van de volgende bronnen.
Bron van pagina-id Onderwerp msdb.. suspect_pages Beheer de suspect_pages-tabel (SQL Server) Foutenlogboek het SQL Server-foutenlogboek (SQL Server Management Studio) weergeven Gebeurtenislogbestanden gebeurtenissen bewaken en erop reageren DBCC DBCC (Transact-SQL) WMI-provider WMI-provider voor concepten voor serverevenementen Start een paginaherstel met een volledige back-up van een database, bestand of bestandsgroep die de pagina bevat. Gebruik in de instructie RESTORE DATABASE de PAGE-component om de pagina-id's van alle pagina's weer te geven die moeten worden hersteld.
Pas de meest recente differentiëlen toe.
Pas de volgende logback-ups toe.
Maak een nieuwe logboekback-up van de database met de uiteindelijke LSN van de herstelde pagina's, dat wil gezegd, het punt waarop de laatst herstelde pagina offline wordt gehaald. De uiteindelijke LSN, die is ingesteld als onderdeel van de eerste herstelbewerking in de reeks, is het redo-doel LSN. Online roll forward van het bestand dat de pagina bevat kan stoppen bij de redo-doel-LSN. Zie de kolom redo_target_lsn van sys.master_filesvoor meer informatie over de huidige LSN van het redo-doel van een bestand. Zie sys.master_files (Transact-SQL)voor meer informatie.
Herstel de nieuwe logboekback-up. Nadat deze nieuwe logboekback-up is toegepast, wordt het terugzetten van de pagina voltooid en zijn de pagina's nu bruikbaar.
Notitie
Deze reeks is vergelijkbaar met een bestandsherstelvolgorde. In feite kunnen paginaherstel en bestandsherstel beide worden uitgevoerd als onderdeel van dezelfde reeks.
Voorbeeld (Transact-SQL)
In het volgende voorbeeld worden vier beschadigde pagina's van bestand B
hersteld met NORECOVERY
. Vervolgens worden twee logboekback-ups toegepast met NORECOVERY
, gevolgd door de back-up van het tail-log, dat met RECOVERY
wordt hersteld. In dit voorbeeld wordt een online herstelbewerking uitgevoerd. In het voorbeeld wordt de bestands-id van het bestand B
1
en zijn de pagina-id's van de beschadigde pagina's 57
, 202
, 916
en 1016
.
RESTORE DATABASE [<database>] PAGE='1:57, 1:202, 1:916, 1:1016'
FROM DISK = '<file_backup_of_file_B>'
WITH NORECOVERY;
RESTORE LOG [<database>] FROM [<log_backup>]
WITH NORECOVERY;
RESTORE LOG [<database>] FROM [<log_backup>]
WITH NORECOVERY;
BACKUP LOG [<database>] TO [<new_log_backup>];
RESTORE LOG [<database>] FROM [<new_log_backup>] WITH RECOVERY;
GO
Zie ook
RESTORE (Transact-SQL)
Back-ups van transactielogboeken (SQL Server) toepassen
Het beheren van de tabel suspect_pages (SQL Server)
back-up maken en herstellen van SQL Server-databases