Descripción y administración de la tabla suspect_pages

La tabla suspect_pages reside en la base de datos msdb y se introdujo en SQL Server 2005. La tabla suspect_pages, que se utiliza para conservar información sobre las páginas sospechosas, es útil para decidir si una restauración es necesaria.

Una página se considera "sospechosa" cuando SQL Server Database Engine (Motor de base de datos de SQL Server) encuentra uno de los errores siguientes al intentar leer una página de datos:

  • Un error 823 producido por una prueba cíclica de redundancia (CRC) emitido por el sistema operativo, por ejemplo un error de disco (ciertos errores de hardware)

  • Un error 824, por ejemplo una página rasgada (cualquier error lógico)

El Id. de página de cada página sospechosa se registra en la tabla suspect_pages. Motor de base de datos registra todas las páginas sospechosas que encuentra durante el procesamiento normal, como en estos casos:

  • Una consulta tiene que leer una página.

  • Durante una operación DBCC CHECKDB.

  • Durante una operación de copia de seguridad.

La tabla suspect_pages también se actualiza cuando es necesario durante una operación de restauración, una operación de reparación de DBCC o una operación de quitar la base de datos.

Errores registrados en la tabla suspect_pages

La tabla suspect_pages contiene una fila por cada página que causó un error 824, hasta un límite de 1.000 filas. En la siguiente tabla se muestran los errores registrados en la columna envent_type de la tabla suspect_pages.

Descripción del error

Valor event_type

Error 823 producido por un error de CRC del sistema operativo, o error 824 que no sea una suma de comprobación no válida o una página rasgada (por ejemplo, un Id. de página no válido)

1

Suma de comprobación errónea

2

Página rasgada

3

Restaurada (la página se restauró después de marcarse como errónea)

4

Reparada (DBCC reparó la página)

5

Desasignada por DBCC

7

La tabla suspect_pages también registra errores transitorios. El origen de los errores transitorios puede ser un error de E/S (por ejemplo, un cable desconectado) o una página que genera un error temporal en una prueba de suma de comprobación repetida.

Cómo actualiza el motor de base de datos la tabla suspect_pages

Motor de base de datos realiza las acciones siguientes en la tabla suspect_pages:

  • Si la tabla no está llena, se actualiza para cada error 824, para indicar que se ha producido un error, y el contador de errores se incrementa.

  • Si una página tiene un error después de ser corregida mediante reparación, restauración o desasignación, su contador number_of_errors se incrementa y la columna last_update se actualiza.

  • Después de que se ha corregido una página de la lista mediante una operación de restauración o de reparación, la operación actualiza la fila suspect_pages para indicar que la página está reparada (event_type = 5) o restaurada (event_type = 4).

  • Si se ejecuta una comprobación DBCC, ésta marca las páginas sin errores como reparadas (event_type = 5) o desasignadas (event_type = 7).

Actualizaciones automáticas de la tabla suspect_pages

Un asociado de creación de reflejo de base de datos actualiza la tabla suspect_pages después de un error en un intento de leer una página de un archivo de datos por una de las razones siguientes.

  • Error 823 error producido por un error de CRC del sistema operativo.

  • Error 824, (error lógico, como una página rasgada)

Las siguientes acciones eliminan automáticamente filas de la tabla suspect_pages.

  • ALTER DATABASE REMOVE FILE

  • DROP DATABASE

  • DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS actualiza la tabla suspect_pages para indicar cada página que se ha reparado o desasignado.

  • RESTORE también actualiza la lista. Una restauración completa, de archivos o de páginas marca las entradas de página como restauradas.

Función de mantenimiento del administrador de la base de datos

Los administradores de bases de datos son responsables de la administración de la tabla, sobre todo de eliminar las filas antiguas. La tabla suspect_pages tiene un tamaño limitado; si se llena, los errores nuevos no se registrarán. Para evitar que esta tabla se llene, el administrador de la base de datos o el administrador del sistema debe borrar manualmente las entradas antiguas de la tabla eliminando filas. Por consiguiente, recomendamos que elimine o archive periódicamente las filas que tienen event_type de restaurada o reparada, o las filas que tienen un valor last_update antiguo.

Para supervisar la actividad en la tabla suspect_pages, puede utilizar Clase de eventos Database Suspect Data Page. A veces se agregan filas a la tabla suspect_pages debido a errores transitorios. Si se agregan muchas filas a la tabla, sin embargo, es probable que haya un problema con el subsistema de E/S. Si observa un aumento repentino en el número de filas que se agregan a la tabla, recomendamos que investigue los posibles problemas en el subsistema de E/S.

Un administrador de la base de datos también puede insertar o actualizar registros. Por ejemplo, actualizar una fila puede resultar útil cuando el administrador de la base de datos sabe que una determinada página sospechosa está intacta realmente, pero desea preservar el registro durante un tiempo.

Ejemplos

En el ejemplo siguiente se eliminan algunas filas de la tabla 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

En el ejemplo siguiente se seleccionan las páginas erróneas de la tabla 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