Summary: Este blog discute los pasos para realizar la reparación de bases de datos SQL mediante la ejecución de DBCC CHECKDB con el comando REPAIR_REBUILD. También se describen las posibles razones que causan la corrupción de base de datos y las formas de solucionarlo antes de reparar la base de datos. El blog explica cómo ejecutar 'DBCC CHECKDB REPAIR_REBUILD con un ejemplo' mediante instrucciones paso a paso. Además, sugiere una herramienta de reparación de SQL como alternativa a las opciones de reparación de DBCC CHECKDB.
Como administradores de bases de datos, deben ejecutar el comando DBCC CHECKDB para comprobar la coherencia física y lógica de su base de datos SQL. Estas comprobaciones pueden fallar debido a la corrupción de la base de datos. Si DBCC CHECKDB informa de errores de consistencia, debe identificar la causa raíz detrás de la corrupción de la base de datos para encontrar la mejor solución posible para corregir los errores.
Posibles razones de la corrupción de bases de datos SQL
A continuación se enumeran las razones más comunes que conducen a la corrupción de bases de datos SQL Server:
- Hardware defectuoso: Compruebe si hay defectos en los controladores de disco, controladores de dispositivo u otros componentes de hardware. Si los errores de coherencia se deben a problemas de hardware, asegúrese de que la configuración del dispositivo de hardware cumple los requisitos de entrada/salida del motor de base de datos de Microsoft SQL Server. O bien, póngase en contacto con el proveedor de hardware o el fabricante del dispositivo para resolver los problemas de hardware subyacentes.
- Errores en el software SQL: Si no puede encontrar ningún problema con el hardware subyacente, compruebe si hay errores de software, ya que Microsoft es conocido por causar la corrupción del índice o la pérdida de datos mientras se ejecuta una reconstrucción del índice en línea en SQL Server 2012/2014.
- Ataque de virus o malware: Los archivos de base de datos SQL pueden corromperse debido a un ataque de virus o malware, convirtiendo los archivos inaccesibles.
Si no se detectan problemas de hardware o software, la mejor solución para arreglar la corrupción es restaurar la base de datos a partir de la copia de seguridad más reciente. Si no hay una buena copia de seguridad, puede corregir los errores ejecutando el comando DBCC CHECKDB con una opción de reparación necesaria para corregir errores específicos. La siguiente sección discutirá como arreglar los errores de corrupción de la base de datos cuando ‘REPAIR_REBUILD’ es recomendado como el nivel mínimo de reparación para resolver todos los errores reportados por DBCC CHECKDB.
¿Cómo reparar una base de datos SQL corrupta utilizando ‘DBCC CHECKDB With REPAIR_REBUILD’?
El comando REPAIR_REBUILD ayuda a reconstruir páginas corruptas o a reparar filas perdidas en índices no agrupados. Puede utilizarlo para realizar reparaciones de bases de datos “sin posibilidad de pérdida de datos”.
Antes de ejecutar el comando ‘DBCC CHECKDB REPAIR_REBUILD’, asegúrese de poner la base de datos en modo SINGLE_USER ejecutando el siguiente comando:
ALTER DATABASE your_dbname SET SINGLE_USER |
Esto es importante porque reparar una base de datos SQL y ejecutar un comando DBCC CHECKDB son dos operaciones distintas. Además, una base de datos está en modo MULTI-USUARIO. Y para repararla, necesitas ponerla en modo SINGLE_USER para evitar obtener errores.
Una vez que la base de datos esté en modo SINGLE_USER, ejecute el siguiente comando para reparar la base de datos:
DBCC CHECKDB(‘tu_nombre_db’, REPAIR_REBUILD) |
Una vez reparada la base de datos, vuelva a ponerla en modo MULTI_USUARIO:
ALTER DATABASE your_dbname SET MULTI_USER |
DBCC CHECKDB con REPAIR_REBUILD Ejemplo
He aquí un ejemplo que muestra un mensaje de error que recomienda ejecutar “repair_rebuild como nivel mínimo de reparación” en la base de datos VLDB.
Siga estos pasos para resolver el error de la tabla:
Paso 1: Abra SQL Server Management Studio (SSMS) y ejecute este comando:
ALTER DATABASE VLDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE; |
Paso 2: Una vez que la base de datos esté en modo SINGLE_USER, haga clic con el botón derecho del ratón en Bases de datos y haga clic en Actualizar.
Paso 3: Ahora expanda Bases de Datos haciendo click en el icono “+”. Puede ver que ‘VLDB’ está en modo SINGLE_USER.
Paso 4: Ahora, ejecute el siguiente comando DBCC CHECKDB repair rebuild:
Si no hay errores, la consulta se ejecutará correctamente. Si es así, ponga la db en modo MULTI_USUARIO.
¿Qué ocurre si ‘DBCC CHECKDB REPAIR_REBUILD’ falla?
La opción REPAIR_REBUILD sólo puede reparar errores de corrupción menores. Por lo tanto, puede fallar en resolver todos los errores reportados por CHECKDB y resultar en un error recomendando “REPAIR_ALLOW_DATA_LOSS como el nivel mínimo de reparación” como se puede ver en la imagen de abajo.
Ejecute el comando “DBCC CHECKDB with REPAIR_ALLOW_DATA_LOSS” como último recurso para reparar la base de datos, ya que implica un riesgo de pérdida de datos. Una alternativa mejor es utilizar una SQL repair tool.
El software Stellar Repair for MS SQL puede ayudar a reparar todo tipo de errores de corrupción de bases de datos SQL. Repara el archivo MDF de la base de datos y recupera todos los objetos, ayudándole así a restaurar la base de datos a su forma original sin pérdida de datos.
Conclusión
Si se producen errores de consistencia al ejecutar el comando DBCC CHECKDB, el uso de la opción REPAIR_REBUILD puede ayudar a solucionar los errores sin pérdida de datos. Sin embargo, es posible que no resuelva todos los errores de consistencia. Es posible que tenga que ejecutar DBCC CHECKDB con REPAIR_ALLOW_DATA_LOSS para corregir la corrupción de la base de datos, pero recuerde que puede provocar la pérdida de datos. El uso del software Stellar Repair for MS SQL puede ayudarle a reparar una base de datos gravemente dañada y restaurarla sin ningún cambio en su forma original.