Gestione della tabella suspect_pages (SQL Server)
Questo argomento descrive come gestire la tabella suspect_pages in SQL Server 2014 usando SQL Server Management Studio o Transact-SQL. La tabella suspect_pages , usata per la gestione di informazioni sulle pagine sospette, è importante per stabilire se è necessario un ripristino. La tabella suspect_pages è contenuta nel database msdb.
Una pagina viene considerata "sospetta" quando il motore di database SQL Server rileva uno degli errori seguenti quando tenta di leggere una pagina dati:
Errore 823 causato da un controllo di ridondanza ciclico (CRC) emesso dal sistema operativo, ad esempio un errore del disco (alcuni errori hardware)
Errore 824, ad esempio una pagina troncato (qualsiasi errore logico)
L'ID di ogni pagina sospetta viene registrato nella tabella suspect_pages . Il motore di database registra tutte le pagine sospette rilevate durante l'elaborazione regolare, ad esempio:
Una pagina deve essere letta da una query.
Durante un'operazione DBCC CHECKDB.
Durante un'operazione di backup.
La tabella suspect_pages viene aggiornata in base alle necessità durante un'operazione di ripristino, di correzione DBCC o di rimozione del database.
Contenuto dell'articolo
Prima di iniziare:
Per gestire la tabella suspect_pages utilizzando:
Prima di iniziare
Consigli
Errori registrati nella tabella suspect_pages
La tabella suspect_pages include una riga per ogni pagina che ha restituito un errore 824, fino a un limite di 1.000 righe. Nella seguente tabella vengono mostrati errori registrati nella colonna event_type della tabella suspect_pages .
Descrizione dell'errore Valoreevent_type 823 errore causato da un errore CRC del sistema operativo o da un errore 824 diverso da un checksum non valido o da una pagina non valida (ad esempio, un ID pagina non valido) 1 Errore nel checksum 2 Pagina incompleta 3 Pagina ripristinata (la pagina è stata ripristinata dopo essere stata contrassegnata come danneggiata) 4 Pagina corretta (la pagina è stata corretta da DBCC, da AlwaysOn o dal mirroring) 5 Pagina deallocata da DBCC 7 Nella tabella suspect_pages vengono anche registrati gli errori temporanei. 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.
Procedura di aggiornamento della tabella suspect_pages tramite il Motore di database
Il motore di database esegue le azioni seguenti nella tabella suspect_pages :
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. 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 aggiornata
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).
Se viene eseguito un controllo DBCC, tutte le pagine prive di errori vengono contrassegnate come corrette (event_type = 5) o deallocate (event_type = 7).
Aggiornamenti automatici della tabella suspect_pages
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.
Un errore del 823 causato da un errore CRC del sistema operativo.
Un errore 824 (danneggiamento logico, ad esempio una pagina incompleta)
Le azioni seguenti aggiornano anche automaticamente righe nella tabella suspect_pages .
L'azione DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS aggiorna la tabella suspect_pages per indicare ogni pagina deallocata o corretta.
In seguito a un ripristino (RESTORE) completo del file o della pagina, le voci della pagina vengono contrassegnate come ripristinate.
Le azioni seguenti eliminano automaticamente righe dalla tabella suspect_pages .
ALTER DATABASE REMOVE FILE
DROP DATABASE
Ruolo di gestione dell'amministratore del database
Gli amministratori dei database sono responsabili della gestione della tabella, in particolare dell'eliminazione delle righe meno recenti. Poiché le dimensioni della tabella suspect_pages sono limitate, se questa si riempie, non verranno registrati nuovi errori. 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. È 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.
Per monitorare l'attività sulla tabella suspect_pages è possibile usare Classe di evento Database Suspect Data Page. Talvolta, a causa di errori temporanei, vengono aggiunte righe alla tabella suspect_pages . Tuttavia se vengono aggiunte molte righe alla tabella è probabile che vi sia un problema con il sottosistema I/O. 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.
L'amministratore del database può inoltre inserire o aggiornare i record. 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.
Sicurezza
Autorizzazioni
Chiunque abbia accesso a msdb può leggere i dati nella tabella suspect_pages . Chiunque disponga dell'autorizzazione UPDATE nella tabella suspect_pages può aggiornare i relativi record. 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.
Uso di SQL Server Management Studio
Per gestire la tabella suspect_pages
In Esplora oggetti, connettersi a un'istanza del motore di database di SQL Server, espanderla e quindi espandere Database.
Espandere Database di sistema, espandere msdb, espandere Tabelle, quindi espandere Tabelle di sistema.
Espandere dbo.suspect_pages e fare clic con il pulsante destro del mouse su Modifica le prime 200 righe.
Nella finestra Query, modificare, aggiornare o eliminare le righe desiderate.
Uso di Transact-SQL
Per gestire la tabella suspect_pages
Connettersi al motore di database.
Dalla barra Standard fare clic su Nuova query.
Copiare e incollare gli esempi seguenti nella finestra Query, quindi fare clic su Esegui. Nell'esempio seguente vengono eliminate alcune righe dalla tabella
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
In questo esempio vengono restituite le pagine errate nella tabella 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
Vedere anche
DROP DATABASE (Transact-SQL)
RESTORE (Transact-SQL)
BACKUP (Transact-SQL)
DBCC (Transact-SQL)
Ripristino di pagine (SQL Server)
suspect_pages (Transact-SQL)
MSSQLSERVER_823
MSSQLSERVER_824