1.- Resetear el estado “Sospechosa” de una base de datos.
use master
go
– Restablece el estado de una base de datos sospechosa.
exec sp_resetstatus pruebatraking
2.- Reparar Tablas
ALTER DATABASE pruebatraking SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKTABLE (‘tabla’,’REPAIR_ALLOW_DATA_LOSS’) WITH TABLOCK
ALTER DATABASE pruebatraking SET MULTI_USER;
3.- Reparar la Base de Datos
ALTER DATABASE pruebatraking SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB (‘pruebatraking’,’REPAIR_ALLOW_DATA_LOSS’)
ALTER DATABASE pruebatraking SET MULTI_USER;
Recomendaciones
1.- Ejecutar diariamente
DBCC CHECKDB (bd) with NO_INFOMSGS
Si la BD es muy grande y la ejecución anterior tarda mucho:
DBCC CHECKDB (bd) With PHYSICAL_ONLY
Esto hará que sólo se haga un control físico de la estructura del disco.
2.- Qué hacer ante un problema.
Sin duda, lo mejor es restaurar desde una copia de seguridad.
3.- Investigar páginas afectadas.
DBCC CHECKDB (‘bd’)
Object ID 2088535921, Id. de índice 0, ID de la partición 72345201021503994, unidad Alloc ID 72345201051571606 (tipo A-fila de datos): Página (1:94299) no pudo ser procesada. See other errors for details. Ver otros errores para más detalles.
Msg 8939, Level 16, State 98, Line 1 Mensaje 8939, Nivel 16, Estado 98, Línea 1
Table error: Object ID 2088535921, index ID 0, partition ID 72345201021503994, alloc unit ID 72345201051571606 (type In-row data), page (1:94299). Error de tabla: Id. de objeto 2088535921, Id. de índice 0, ID de la partición 72345201021503994, unidad Alloc ID 72345201051571606 (tipo A-fila de datos), página (1:94299). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Test (IS_OFF (BUF_IOERR, pBUF-> BSTAT)) ha fallado.
CHECKDB found 0 allocation errors and 2 consistency errors in table ‘yourtable’ (object ID 2088535921). CHECKDB encuentra 0 errores de asignación y 2 errores coherencia en la tabla ‘yourtable’ (identificador de objeto 2088535921).
CHECKDB found 0 allocation errors and 2 consistency errors in database ‘yourdb’. CHECKDB encuentra 0 errores de asignación y 2 errores coherencia en base de datos ‘yourdb.
repair_allow_data_loss is the minimum repair level for the errors found by DBCC CHECKDB (yourdb). REPAIR_ALLOW_DATA_LOSS es el nivel mínimo para reparar los errores encontrados por DBCC CHECKDB (yourdb).
Sabemos que la página con errores es 1:94299
Lo primero es ver si se tratan de datos en un montón, en un índice agrupado o e uno no agrupado.
En el texto se puede ver que es el índice con Id 0
Tambien podriamos examinar la página asÍ:
DBCC TRACEON (3604, – 1) // Errores por pantalla
GOGO
DBCC PAGE ( ‘yourdb’ , 1 , 94299 , 3 )DBCC PAGE (bd, 1, 94299, 3)
GOGO
En la salida podrás ver algo como:
Metadata: IndexId = n Metadatos: = n IndexId
If n is greater than 1 it is a non-clustered index and can safely be dropped and recreated. Si n es mayor que 1 es un índice no agrupado y con seguridad se puede quitar y volver a crear. If n is 0 or 1 you have data corruption and need to perform one of the options described below. Si n es 0 ó 1 usted tiene daños en los datos y la necesidad de realizar una de las opciones descritas a continuación.
4.- Restaurar a partir de una copia
Si sólo unas pocas páginas que se ven afectados tienen la opción de restaurar de forma selectiva sólo las páginas mal, de la siguiente manera.
RESTORE DATABASE yourdb PAGE = ’1:94299′
FROM DISK = ‘C:\yourdb.bak’
WITH NORECOVERY
Si el modelo de recuperación es simple no tiene esa opción
5.- Opciones de Restauración Automática (Cuando no hay otra posibilidad)
Haremos una copia de seguridad antes de nada.
En la información de DBCC CHECKDB (‘bd’) nos indicará el nivel mínimo de reparación.
Si el nivel de reparación mínima es REPAIR_REBUILD hemos tenido suerte.:
DBCC CHECKDB (‘Nombre de DB’, REPAIR_REBUILD)
Sino:
DBCC CHECKDB (‘Nombre de DB, REPAIR_ALLOW_DATA_LOSS)The syntax is
En este caso se pueden perder datos y es probable que haya problemas de Integridad Referencial. Se recomienda ejecutar después:
DBCC CHECKCONSTRAINTS
6.- Resumen
La acción correcta frente a la corrupción es casi siempre de restaurar desde una copia de seguridad. Only use the automatic repair options as a last resort, and with full understanding of the damage this may do. Sólo use las opciones de rep

septiembre 9th, 2010
admin
Posted in