Gestione della tabella suspect_pages (SQL Server)Manage the suspect_pages Table (SQL Server)

In questo argomento viene descritto come gestire la tabella suspect_pages in SQL Server 2017SQL Server 2017 usando SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to manage the suspect_pages table in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. La tabella suspect_pages , usata per la gestione di informazioni sulle pagine sospette, è importante per stabilire se è necessario un ripristino.The suspect_pages table is used for maintaining information about suspect pages, and is relevant in helping to decide whether a restore is necessary. La tabella suspect_pages è contenuta nel database msdb.The suspect_pages table resides in the msdb database.

Una pagina è considerata "sospetta" quando nel Motore di database di SQL ServerSQL Server Database Engine si verifica uno dei seguenti errori quando viene tentata la lettura di una pagina di dati:A page is considered "suspect" when the Motore di database di SQL ServerSQL Server Database Engine encounters one of the following errors when it tries to read a data page:

  • Un errore 823 causato da un controllo di ridondanza ciclico (CRC) generato dal sistema operativo, ad esempio un errore del disco (alcuni errori hardware)An 823 error that was caused by a cyclic redundancy check (CRC) issued by the operating system, such as a disk error (certain hardware errors)

  • Un errore 824, ad esempio una pagina incompleta (qualsiasi errore logico)An 824 error, such as a torn page (any logical error)

    L'ID di ogni pagina sospetta viene registrato nella tabella suspect_pages .The page ID of every suspect page is recorded in the suspect_pages table. Motore di databaseDatabase Engine registra tutte le pagine sospette rilevate durante la normale elaborazione, ad esempio nei casi seguenti:The Motore di databaseDatabase Engine records any suspect pages encountered during regular processing, such as the following:

  • Una pagina deve essere letta da una query.A query has to read a page.

  • Durante un'operazione DBCC CHECKDB.During a DBCC CHECKDB operation.

  • Durante un'operazione di backup.During a backup operation.

    La tabella suspect_pages viene aggiornata in base alle necessità durante un'operazione di ripristino, di correzione DBCC o di rimozione del database.The suspect_pages table is also updated as necessary during a restore operation, a DBCC repair operation, or a drop database operation.

    Contenuto dell'argomentoIn This Topic

  • Prima di iniziare:Before you begin:

    IndicazioniRecommendations

    SicurezzaSecurity

  • Per gestire la tabella suspect_pages utilizzando:To manage the suspect_pages table, using:

    SQL Server Management StudioSQL Server Management Studio

    Transact-SQLTransact-SQL

Prima di iniziare Before You Begin

Indicazioni Recommendations

  • Errori registrati nella tabella suspect_pagesErrors Recorded in suspect_pages Table

    La tabella suspect_pages include una riga per ogni pagina che ha restituito un errore 824, fino a un limite di 1.000 righe.The suspect_pages table contains one row per page that failed with an 824 error, up to a limit of 1,000 rows. Nella seguente tabella vengono mostrati errori registrati nella colonna event_type della tabella suspect_pages .The following table shows errors logged in the event_type column of the suspect_pages table.

    Descrizione dell'erroreError description Valoreevent_type event_type value
    Errore 823 causato da un errore CRC del sistema operativo o errore 824 diverso da un errore nel checksum o da una pagina incompleta (ad esempio un ID pagina errato)823 error caused by an operating system CRC error or 824 error other than a bad checksum or a torn page (for example, a bad page ID) 11
    Errore nel checksumBad checksum 22
    Pagina incompletaTorn page 33
    Pagina ripristinata (la pagina è stata ripristinata dopo essere stata contrassegnata come danneggiata)Restored (The page was restored after it was marked bad) 44
    Pagina corretta (la pagina è stata corretta da DBCC)Repaired (DBCC repaired the page) 55
    Pagina deallocata da DBCCDeallocated by DBCC 77

    Nella tabella suspect_pages vengono anche registrati gli errori temporanei.The suspect_pages table also records transient errors. Tra le origini degli errori temporanei rientrano gli errori di I/O, ad esempio un cavo disconnesso, o le pagine che non superano temporaneamente un test di checksum ripetuto.Sources of transient errors include an I/O error (for example, a cable was disconnected) or a page that temporarily fails a repeated checksum test.

  • Procedura di aggiornamento della tabella suspect_pages tramite il Motore di databaseHow the Database Engine Updates the suspect_pages Table

    Il Motore di databaseDatabase Engine esegue le azioni seguenti nella tabella suspect_pages :The Motore di databaseDatabase Engine takes the following actions on the suspect_pages table:

    • Se la tabella non è piena, viene aggiornata per ogni errore 824 in modo da segnalare il verificarsi dell'errore e viene incrementato il contatore degli errori.If the table is not full, it is updated for every 824 error, to indicate that an error has occurred, and the error counter is incremented. Se una pagina contiene un errore dopo l'esecuzione di un'operazione di correzione, ripristino o deallocazione, il conteggio number_of_errors corrispondente viene incrementato e la relativa colonna last_update viene aggiornataIf a page has an error after it is fixed by being repaired, restored, or deallocated, its number_of_errors count is incremented and its last_update column is updated

    • Dopo l'esecuzione di un'operazione di ripristino o di correzione di una pagina elencata, la riga suspect_pages viene aggiornata per indicare che la pagina è stata corretta (event_type = 5) o ripristinata (event_type = 4).After a listed page is fixed by a restore or a repair operation, the operation updates the suspect_pages row to indicate that the page is repaired (event_type = 5) or restored (event_type = 4).

    • Se viene eseguito un controllo DBCC, tutte le pagine prive di errori vengono contrassegnate come corrette (event_type = 5) o deallocate (event_type = 7).If a DBCC check is run, the check marks any error-free pages as repaired (event_type = 5) or deallocated (event_type = 7).

  • Aggiornamenti automatici della tabella suspect_pagesAutomatic Updates to the suspect_pages Table

    Un partner di mirroring di database o una replica di disponibilità AlwaysOn aggiorna la tabella suspect_pages dopo che un tentativo di leggere una pagina da un file di dati non riesce per una delle seguenti ragioni.A database mirroring partner or Always On availability replica updates the suspect_pages table after an attempt to read a page from a data file fails for one of the following reasons.

    • Un errore del 823 causato da un errore CRC del sistema operativo.An 823 error that is caused by an operating system CRC error.

    • Un errore 824 (danneggiamento logico, ad esempio una pagina incompleta)An 824 error (logical corruption such as a torn page).

      Le azioni seguenti aggiornano anche automaticamente righe nella tabella suspect_pages .The following actions also automatically update rows in the suspect_pages table.

    • L'azione DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS aggiorna la tabella suspect_pages per indicare ogni pagina deallocata o corretta.DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS updates the suspect_pages table to indicate each page that it has deallocated or repaired.

    • In seguito a un ripristino (RESTORE) completo del file o della pagina, le voci della pagina vengono contrassegnate come ripristinate.A full, file, or page RESTORE marks the page entries as restored.

      Le azioni seguenti eliminano automaticamente righe dalla tabella suspect_pages .The following actions automatically delete rows from the suspect_pages table.

    • ALTER DATABASE REMOVE FILEALTER DATABASE REMOVE FILE

    • DROP DATABASEDROP DATABASE

  • Ruolo di gestione dell'amministratore del databaseMaintenance Role of the Database Administrator

    Gli amministratori dei database sono responsabili della gestione della tabella, in particolare dell'eliminazione delle righe meno recenti.Database administrators are responsible for managing the table, primarily by deleting old rows. Poiché le dimensioni della tabella suspect_pages sono limitate, se questa si riempie, non verranno registrati nuovi errori.The suspect_pages table is limited in size, and if it fills, new errors are not logged. Per evitare che lo spazio della tabella si esaurisca, l'amministratore del database o l'amministratore di sistema devono cancellare manualmente i dati meno recenti dalla tabella tramite l'eliminazione delle righe.To prevent this table from filling up, the database administrator or system administrator must manually clear out old entries from this table by deleting rows. È quindi consigliabile archiviare o eliminare periodicamente le righe aventi un valore event_type ripristinato o riparato oppure le righe con un valore last_update obsoleto.Therefore, we recommend that you periodically delete or archive rows that have an event_type of restored or repaired, or rows that have an old last_update value.

    Per monitorare l'attività sulla tabella suspect_pages è possibile usare Classe di evento Database Suspect Data Page.To monitor the activity on the suspect_pages table, you can use the Database Suspect Data Page Event Class. Talvolta, a causa di errori temporanei, vengono aggiunte righe alla tabella suspect_pages .Rows are sometimes added to the suspect_pages table because of transient errors. Tuttavia se vengono aggiunte molte righe alla tabella è probabile che vi sia un problema con il sottosistema I/O.If many rows are being added to the table, however, a problem probably exists with the I/O subsystem. Se si nota un aumento improvviso nel numero di righe che vengono aggiunte alla tabella, si consiglia di esaminare possibili problemi nel sottosistema I/O.If you notice a sudden increase in the number of rows being added to the table, we recommend that you investigate possible problems in your I/O subsystem.

    L'amministratore del database può inoltre inserire o aggiornare i record.A database administrator can also insert or update records. Ad esempio, l'aggiornamento di una riga potrebbe essere utile se l'amministratore del database è certo che una determinata pagina sospetta è in realtà rimasta invariata, ma desidera mantenere temporaneamente il record.For example, updating a row might useful when the database administrator knows that a particular suspect page is actually intact, but wants to preserve the record for a while.

Sicurezza Security

Autorizzazioni Permissions

Chiunque abbia accesso a msdb può leggere i dati nella tabella suspect_pages .Anyone with access to msdb can read the data in the suspect_pages table. Chiunque disponga dell'autorizzazione UPDATE nella tabella suspect_pages può aggiornare i relativi record.Anyone with UPDATE permission on the suspect_pages table can update its records. I membri del ruolo predefinito del database db_owner in msdb o del ruolo predefinito del server sysadmin possono inserire, aggiornare ed eliminare i record.Members the db_owner fixed database role on msdb or the sysadmin fixed server role can insert, update, and delete records.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per gestire la tabella suspect_pagesTo manage the suspect_pages table

  1. In Esplora oggetticonnettersi a un'istanza di Motore di database di SQL ServerSQL Server Database Engine, espandere tale istanza, quindi espandere Database.In Object Explorer, connect to an instance of the Motore di database di SQL ServerSQL Server Database Engine, expand that instance, and then expand Databases.

  2. Espandere Database di sistema, espandere msdb, espandere Tabelle, quindi espandere Tabelle di sistema.Expand System Databases, expand msdb, expand Tables, and then expand System Tables.

  3. Espandere dbo.suspect_pages e fare clic con il pulsante destro del mouse su Modifica le prime 200 righe.Expand dbo.suspect_pages and right-click Edit Top 200 Rows.

  4. Nella finestra Query, modificare, aggiornare o eliminare le righe desiderate.In the query window, edit, update, or delete the rows that you want.

Utilizzo di Transact-SQL Using Transact-SQL

Per gestire la tabella suspect_pagesTo manage the suspect_pages table

  1. Connettersi al Motore di databaseDatabase Engine.Connect to the Motore di databaseDatabase Engine.

  2. Dalla barra Standard fare clic su Nuova query.From the Standard bar, click New Query.

  3. Copiare e incollare gli esempi seguenti nella finestra Query, quindi fare clic su Esegui.Copy and paste the following examples into the query window and click Execute. Nell'esempio seguente vengono eliminate alcune righe dalla tabella suspect_pages .This example deletes some of the rows from the suspect_pages table.

-- 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 questo esempio vengono restituite le pagine errate nella tabella suspect_pages .This example returns the bad pages in the suspect_pages table.

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

Vedere ancheSee Also

DROP DATABASE (Transact-SQL) DROP DATABASE (Transact-SQL)
RESTORE (Transact-SQL) RESTORE (Transact-SQL)
BACKUP (Transact-SQL) BACKUP (Transact-SQL)
DBCC (Transact-SQL) DBCC (Transact-SQL)
Ripristino di pagine (SQL Server) Restore Pages (SQL Server)
suspect_pages (Transact-SQL) suspect_pages (Transact-SQL)