Si llegáis a este post, posiblemente es porque habéis tenido un error en vuestra base de datos de SQL Server al ejecutar DBCC CHECKDB.

El resultado de dicho análisis puede arrojar diversos resultados, y en mi caso lo ejecuté por un error que me dió trabajando con un ERP.

¿Cómo detectar este problema?

Em mi caso a la hora de trabajar con el ERP me daba constantemente time ups (y no me permitía grabar diferentes tipos de documentos) así que al ejecutar DBCC CheckDB me aparecieron un montón de líneas rojas mostrando un montón de errores del tipo:

Mens. 8976, Nivel 16, Estado 1, Línea 1

Error de tabla: id. de objeto 130099504, id. de índice 1, id. de partición 72057594049069056, id. de unidad de asignación 72057594055491584 (tipo In-row data). No se encontró la página (1:18322) en el examen, aunque su (1:5010) primario y (1:24128) anterior hacen referencia a él. Compruebe los errores anteriores.

Tras investigar un poco, detectamos problemas con el disco duro y que al grabar los datos se hacía mal, por lo que en primer lugar fue rescatar copias de seguridad y en segundo lugar fue cambiar el disco duro del ordenador.

Cómo reparar (o intentar reparar la base de datos)

Lo primero es saber que para corregir problemas detectados con DBCC CHECKDB tenemos varias opciones:

DBCC CHECKDB (BBDD, REPAIR_ALLOW_DATA_LOSS)

Intenta reparar todos los errores indicados. Estas reparaciones pueden ocasionar alguna pérdida de datos.

DBCC CHECKDB (BBDD, REPAIR_FAST)

La sintaxis se mantiene únicamente por compatibilidad con versiones anteriores. No se realizan acciones de reparación.

DBCC CHECKDB (BBDD, REPAIR_REBUILD)

Lleva a cabo rápidamente acciones de reparación menores, como la reparación de claves adicionales en índices sin agrupar, y reparaciones lentas como la regeneración de índices. Estas reparaciones se pueden realizar sin riesgo de pérdida de datos.

Como si fueramos pupilos del Dr. House, comenzaremos por la opción menos intrusiva, así que en mi caso prové con la tercera opción, pero…

el pero es que para ejecutar este comando debemos activar la base de datos en modo single (aparece algo parecido a esto)

No se procesó la instrucción de reparación. La base de datos debe estar en modo de usuario único.

Así que tenemos que ir a la base de datos, botón derecho y pulsar propiedades

Una vez abierta, debemos ir a opciones, y en el apartado “Estado” tenemos un punto que pone “Restringir acceso“, allí cambiamos a single_user (y al finalizar todo el procedimiento hacemos lo contrario para volver al estado inicial “multi_user“)

Una vez tenemos la base de datos en modo single, ya podemos ejecutar DBCC CHECKDB (BBDD, REPAIR_REBUILD) cambiando BBDD por el nombre de nuestra base de datos.

en mi caso sonó la campana y el procedimiento pudo corregir todos los errores que tenía la base de datos.

Como siempre, copias de seguridad que siempre nos pueden sacar de algún apuro.