Informazioni sulla tabella suspect_pages e sulla relativa gestione

Data aggiornamento: 5 dicembre 2005

In SQL Server 2005 le informazioni sulle pagine sospette vengono conservate nella tabella suspect_pages del database msdb di ogni istanza del server. La tabella suspect_pages consente di stabilire se è necessario un ripristino.

Quando Motore di database di SQL Server legge una pagina di database contenente un errore 824 (vedere la tabella seguente), tale pagina viene considerata "sospetta" e il relativo ID viene registrato nella tabella suspect_pages. Motore di database registra tutte le pagine sospette rilevate durante la normale elaborazione, ad esempio nei casi seguenti:

  • Una pagina deve essere letta da una query.
  • Durante un'operazione DBCC CHECKDB.
  • Durante un'operazione di backup.

La tabella suspect_pages viene inoltre aggiornata in base alle necessità durante un'operazione di ripristino, un'operazione di correzione DBCC o un'operazione di rimozione del database.

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 colonna event_type della tabella suspect_pages vengono registrati gli errori 824 seguenti:

Descrizione dell'errore Valore della colonna event_type

Errori 824 diversi da un errore nel checksum o una pagina incompleta, ad esempio un ID di pagina danneggiata

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)

5

Pagina deallocata da DBCC

7

Nella tabella suspect_pages vengono inoltre 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

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

Le azioni seguenti eliminano automaticamente righe dalla tabella suspect_pages:

  • ALTER DATABASE REMOVE FILE
  • DROP DATABASE
  • L'azione DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS aggiorna la tabella suspect_pages per indicare ogni pagina deallocata o corretta.
  • L'elenco viene aggiornato anche dall'azione RESTORE. In seguito a un ripristino completo del file o della pagina, le voci della pagina vengono contrassegnate come ripristinate.

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. Quando le dimensioni della tabella sono prossime al limite, l'amministratore del database o l'amministratore di sistema devono cancellare manualmente i dati meno recenti dalla tabella tramite l'eliminazione delle righe. Non è consentita l'immissione di altre voci fino a quando l'amministratore del database non ha eseguito questa operazione.

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.

Esempi

Nell'esempio seguente vengono eliminate alcune righe dalla tabella suspect_pages.

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

Nell'esempio seguente vengono selezionate le pagine danneggiate della 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

Concetti

Esecuzione di ripristini di pagine

Altre risorse

DROP DATABASE (Transact-SQL)
RESTORE (Transact-SQL)
BACKUP (Transact-SQL)
DBCC (Transact-SQL)
suspect_pages (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005