Delen via


Het beheren van de tabel suspect_pages (SQL Server)

van toepassing op:SQL Server-

In dit onderwerp wordt beschreven hoe u de suspect_pages tabel in SQL Server beheert met behulp van SQL Server Management Studio of Transact-SQL. De tabel suspect_pages wordt gebruikt voor het onderhouden van informatie over verdachte pagina's en is relevant bij het bepalen of een herstelbewerking noodzakelijk is. De tabel suspect_pages bevindt zich in de msdb-database.

Een pagina wordt beschouwd als 'verdacht' wanneer de SQL Server Database Engine een van de volgende fouten tegenkomt wanneer wordt geprobeerd een gegevenspagina te lezen:

  • Een 823-fout die is veroorzaakt door een cyclische redundantiecontrole (CRC) die is uitgegeven door het besturingssysteem, zoals een schijffout (bepaalde hardwarefouten)

  • Een 824-fout, zoals een gescheurde pagina (een logische fout)

De pagina-id van elke verdachte pagina wordt vastgelegd in de tabel suspect_pages. De database-engine registreert verdachte pagina's die tijdens de reguliere verwerking zijn opgetreden, zoals de volgende:

  • Een query moet een pagina lezen.

  • Tijdens een DBCC CHECKDB-bewerking.

  • Tijdens een back-upbewerking.

De suspect_pages tabel wordt indien nodig ook bijgewerkt tijdens een herstelbewerking, een DBCC-herstelbewerking of het verwijderen van een database.

In Dit Onderwerp

Voordat u begint

Aanbevelingen

  • fouten vastgelegd in suspect_pages-tabel

    De suspect_pages tabel bevat één rij per pagina die is mislukt met een fout 824, tot een limiet van 1000 rijen. In de volgende tabel ziet u fouten die zijn vastgelegd in de kolom event_type van de suspect_pages tabel.

    Foutbeschrijving gebeurtenis_type waarde
    823-fout veroorzaakt door een CRC-fout van het besturingssysteem of een andere fout dan een ongeldige controlesom of een gescheurde pagina (bijvoorbeeld een ongeldige pagina-id) 1
    Ongeldige controlesom 2
    Gescheurde pagina 3
    Hersteld (de pagina is hersteld nadat deze is gemarkeerd als ongeldig) 4
    Hersteld (DBCC heeft de pagina hersteld) 5
    Toewijzing ongedaan gemaakt door DBCC 7

    De tabel suspect_pages registreert ook tijdelijke fouten. Bronnen van tijdelijke fouten omvatten een I/O-fout (bijvoorbeeld een kabel is losgekoppeld) of een pagina die tijdelijk een herhaalde controlesomtest mislukt.

  • Hoe de database-engine de suspect_pages tabel bijwerken

    De database-engine voert de volgende acties uit op de suspect_pages tabel:

    • Als de tabel niet vol is, wordt deze bijgewerkt voor elke 824-fout, om aan te geven dat er een fout is opgetreden en wordt de foutteller verhoogd. Als een pagina een fout heeft nadat deze is gerepareerd, teruggebracht of de toewijzing ervan is ongedaan gemaakt, wordt het aantal number_of_errors verhoogd en wordt de last_update kolom bijgewerkt.

    • Nadat een vermelde pagina is hersteld door een herstel- of een reparatiebewerking, wordt de suspect_pages rij bijgewerkt om aan te geven dat de pagina wordt gerepareerd (event_type = 5) of hersteld (event_type = 4).

    • Als een DBCC-controle wordt uitgevoerd, worden eventuele foutloze pagina's gemarkeerd als hersteld (event_type = 5) of de toewijzing ongedaan gemaakt (event_type = 7).

  • Automatische updates voor de suspect_pages tabel

    Een databasespiegelingpartner of AlwaysOn-beschikbaarheidsreplica werkt de suspect_pages tabel bij nadat een poging om een pagina uit een gegevensbestand te lezen om een van de volgende redenen mislukt.

    • Een 823-fout die wordt veroorzaakt door een CRC-fout van het besturingssysteem.

    • Een 824-fout (logische beschadiging zoals een gescheurde pagina).

    Met de volgende acties worden ook rijen in de suspect_pages tabel automatisch bijgewerkt.

    • DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS werkt de tabel suspect_pages bij om aan te geven welke pagina's het heeft opgeheven of hersteld.

    • Een volledig, bestand of paginaHERSTEL markeert de pagina-vermeldingen als hersteld.

    Met de volgende acties worden rijen automatisch uit de suspect_pages tabel verwijderd.

    • ALTER DATABASE REMOVE FILE

    • DROP DATABASE

  • onderhoudsrol van de databasebeheerder

    Databasebeheerders zijn verantwoordelijk voor het beheren van de tabel, voornamelijk door oude rijen te verwijderen. De suspect_pages tabel is beperkt in grootte, en als deze vol raakt, worden nieuwe fouten niet gelogd. Als u wilt voorkomen dat deze tabel vol is, moet de databasebeheerder of systeembeheerder oude vermeldingen uit deze tabel handmatig wissen door rijen te verwijderen. Daarom raden we u aan om regelmatig rijen te verwijderen of te archiveren met een event_type van herstelde of gerepareerde, of rijen met een verouderde last_update waarde.

    Als u de activiteit in de suspect_pages tabel wilt controleren, kunt u de Gebeurtenisklasse van de databaseverdachte gegevenspagina gebruiken. Rijen worden soms toegevoegd aan de suspect_pages tabel vanwege tijdelijke fouten. Als er echter veel rijen aan de tabel worden toegevoegd, bestaat er waarschijnlijk een probleem met het I/O-subsysteem. Als u een plotselinge toename ziet van het aantal rijen dat aan de tabel wordt toegevoegd, raden we u aan mogelijke problemen in uw I/O-subsysteem te onderzoeken.

    Een databasebeheerder kan ook records invoegen of bijwerken. Het bijwerken van een rij kan bijvoorbeeld handig zijn wanneer de databasebeheerder weet dat een bepaalde verdachte pagina daadwerkelijk intact is, maar de record een tijdje wil behouden.

Veiligheid

Machtigingen

Iedereen met toegang tot msdb- kan de gegevens lezen in de suspect_pages tabel. Iedereen met de machtiging UPDATE voor de suspect_pages tabel kan de records bijwerken. Leden van de db_owner vaste databaserol op msdb- of de sysadmin vaste serverfunctie kunnen records invoegen, bijwerken en verwijderen.

SQL Server Management Studio gebruiken

De suspect_pages-tabel beheren

  1. Maak in Objectverkennerverbinding met een exemplaar van de SQL Server Database Engine, vouw dat exemplaar uit en vouw vervolgens Databasesuit.

  2. Vouw systeemdatabasesuit, vouw msdb-uit, vouw tabellenuit en vouw systeemtabellenuit.

  3. Vouw dbo.suspect_pages uit en klik met de rechtermuisknop op Bewerk bovenste 200 rijen.

  4. Bewerk, werk bij of verwijder de rijen die je wilt in het queryvenster.

Transact-SQL gebruiken

De suspect_pages-tabel beheren

  1. Maak verbinding met de database-engine.

  2. Klik in de standaardbalk op Nieuwe query.

  3. Kopieer en plak de volgende voorbeelden in het queryvenster en klik op uitvoeren. In dit voorbeeld worden enkele rijen uit de suspect_pages tabel verwijderd.

-- Delete restored, repaired, or deallocated pages.  
DELETE FROM msdb..suspect_pages  
   WHERE (event_type = 4 OR event_type = 5 OR event_type = 7);  
GO  
  

In dit voorbeeld worden de slechte pagina's in de tabel suspect_pages geretourneerd.

-- Select nonspecific 824, bad checksum, and torn page errors.  
SELECT * FROM msdb..suspect_pages  
   WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);  
GO  
  

Zie ook

DROP DATABASE (Transact-SQL)
RESTORE (Transact-SQL)
BACKUP (Transact-SQL)
DBCC (Transact-SQL)
pagina's (SQL Server) herstellen
suspect_pages (Transact-SQL)