Dela via


Hantera suspect_pages-tabellen (SQL Server)

gäller för:SQL Server

Det här avsnittet beskriver hur du hanterar suspect_pages-tabellen i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL. Tabellen suspect_pages används för att underhålla information om misstänkta sidor och är relevant för att avgöra om en återställning är nödvändig. Tabellen suspect_pages finns i databasen msdb.

En sida anses vara "misstänkt" när SQL Server Database Engine stöter på något av följande fel när den försöker läsa en datasida:

  • Ett 823-fel som orsakades av en cyklisk redundanskontroll (CRC) som utfärdats av operativsystemet, till exempel ett diskfel (vissa maskinvarufel)

  • Ett 824-fel, till exempel en sönderriven sida (eventuella logiska fel)

Sid-ID:t för varje misstänkt sida registreras i tabellen suspect_pages. Databasmotorn registrerar eventuella misstänkta sidor som påträffas under regelbunden bearbetning, till exempel följande:

  • En förfrågan måste läsa en sida.

  • Under en DBCC CHECKDB-åtgärd.

  • Under en säkerhetskopieringsåtgärd.

Tabellen suspect_pages uppdateras också efter behov under en återställningsåtgärd, en DBCC-reparationsåtgärd eller en drop-databasåtgärd.

i det här avsnittet

Innan du börjar

Rekommendationer

  • Fel som registrerats i suspect_pages-tabellen

    Tabellen suspect_pages innehåller en rad för varje sida som misslyckades med ett 824-fel, upp till en gräns på 1 000 rader. I följande tabell visas fel som loggats i kolumnen event_type i suspect_pages-tabellen.

    Felbeskrivning händelsetyp värde
    823-fel som orsakas av ett CRC-fel för operativsystemet eller ett annat 824-fel än en felaktig kontrollsumma eller en sönderriven sida (till exempel ett felaktigt sid-ID) 1
    Felaktig kontrollsumma 2
    Sönderriven sida 3
    Återställd (Sidan återställdes efter att den markerats som felaktig) 4
    Reparerad (DBCC reparerade sidan) 5
    Frigjord av DBCC 7

    Tabellen suspect_pages registrerar även tillfälliga fel. Källor till tillfälliga fel inkluderar ett I/O-fel (till exempel en kabel kopplades från) eller en sida som tillfälligt misslyckas med ett upprepat kontrollsummatest.

  • Hur databasmotorn uppdaterar suspect_pages-tabellen

    Databasmotorn vidtar följande åtgärder i tabellen suspect_pages:

    • Om tabellen inte är full uppdateras den för varje 824-fel för att indikera att ett fel har inträffat och felräknaren ökas. Om en sida har ett fel när den har åtgärdats genom att repareras, återställas eller frigöras ökas antalet number_of_errors och dess last_update kolumn uppdateras

    • När en listad sida har åtgärdats av en återställning eller en reparationsåtgärd uppdaterar åtgärden raden suspect_pages för att indikera att sidan repareras (event_type = 5) eller återställs (event_type = 4).

    • Om en DBCC-kontroll körs markerar kontrollen eventuella felfria sidor som reparerade (event_type = 5) eller frigjorda (event_type = 7).

  • automatiska uppdateringar av suspect_pages tabell

    En databasspeglingspartner eller en Always On-tillgänglighetsreplik uppdaterar suspect_pages-tabellen efter att ett försök att läsa en sida från en datafil misslyckas av någon av följande orsaker.

    • Ett 823-fel som orsakas av ett CRC-fel för operativsystemet.

    • Ett 824-fel (logisk skada, till exempel en sönderriven sida).

    Följande åtgärder uppdaterar också automatiskt rader i tabellen suspect_pages.

    • DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS uppdaterar tabellen suspect_pages för att ange varje sida som den har frigjort eller reparerat.

    • En fullständig återställning, filåterställning eller sidåterställning markerar sidposterna som återställda.

    Följande åtgärder tar automatiskt bort rader från tabellen suspect_pages.

    • ALTER DATABASE REMOVE FILE

    • TA BORT DATABAS

  • underhållsrollen för databasadministratören

    Databasadministratörer ansvarar för att hantera tabellen, främst genom att ta bort gamla rader. Tabellen suspect_pages är begränsad i storlek och om den fylls loggas inte nya fel. För att förhindra att den här tabellen fylls i måste databasadministratören eller systemadministratören manuellt rensa gamla poster från den här tabellen genom att ta bort rader. Därför rekommenderar vi att du regelbundet tar bort eller arkiverar rader som har en event_type som är "återställd" eller "reparerad", eller rader som har ett gammalt last_update värde.

    Om du vill övervaka aktiviteten i tabellen suspect_pages kan du använda händelseklassen databasmisstänkt datasida. Rader läggs ibland till i tabellen suspect_pages på grund av tillfälliga fel. Om många rader läggs till i tabellen finns det dock förmodligen ett problem med I/O-undersystemet. Om du märker en plötslig ökning av antalet rader som läggs till i tabellen rekommenderar vi att du undersöker möjliga problem i I/O-undersystemet.

    En databasadministratör kan också infoga eller uppdatera poster. Det kan till exempel vara användbart att uppdatera en rad när databasadministratören vet att en viss misstänkt sida faktiskt är intakt, men vill bevara posten ett tag.

Säkerhet

Behörigheter

Alla som har åtkomst till msdb kan läsa data i tabellen suspect_pages. Alla med UPDATE-behörighet i tabellen suspect_pages kan uppdatera sina poster. Medlemmar i db_owner fasta databasrollen på msdb eller sysadmin fasta serverrollen kan insera, uppdatera och ta bort poster.

Använda SQL Server Management Studio

Så här hanterar du tabellen suspect_pages

  1. I Object Exploreransluter du till en instans av SQL Server Database Engine, expanderar den instansen och expanderar sedan Databaser.

  2. Expandera System Databases, expandera msdb, expandera Tablesoch expandera sedan System Tables.

  3. Expandera dbo.suspect_pages och högerklicka på Redigera de översta 200 raderna.

  4. I frågefönstret redigerar, uppdaterar eller tar du bort de rader du vill.

Använda Transact-SQL

Så här hanterar du tabellen suspect_pages

  1. Anslut till databasmotorn.

  2. I standardfältet klickar du på Ny fråga.

  3. Kopiera och klistra in följande exempel i frågefönstret och klicka på Kör. I det här exemplet tas några av raderna bort från tabellen suspect_pages.

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

Det här exemplet returnerar de felaktiga sidorna i tabellen suspect_pages.

-- 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  
  

Se även

DROP DATABASE (Transact-SQL)
RESTORE (Transact-SQL)
BACKUP (Transact-SQL)
DBCC (Transact-SQL)
Återställ sidor (SQL Server)
suspect_pages (Transact-SQL)