Summary: El comando de consola de base de datos (DBCC) CHECKDB se utiliza para identificar errores en la base de datos de SQL Server. El DBCC CHECKDB viene con tres opciones de reparación para corregir errores relacionados con la base de datos. Este artículo describe cómo utilizar el comando DBCC CHECKDB para reparar la base de datos SQL. Además, se discutirá acerca de un software especializado de reparación de MS SQL que puede utilizar cuando DBCC CHECKDB no puede reparar la base de datos.
DBCC CHECKDB se utiliza para comprobar la integridad física y lógica de los objetos de la base de datos, las relaciones entre índices y otras comprobaciones estructurales. El fallo de cualquiera de estas comprobaciones informará de errores de consistencia como parte del comando de consola de la base de datos.
El mejor método para reparar errores en la base de datos, informados por DBCC CHECKDB, es ejecutar la última copia de seguridad buena conocida, tal y como recomienda Microsoft. Sin embargo, si la copia de seguridad no está disponible o está dañada, puede intentar acceder a la base de datos en estado de Emergencia.
El estado de Emergencia permite acceder a una base de datos marcada como sospechosa. También permite ejecutar las opciones de reparación DBCC CHECKDB para resolver la corrupción de la base de datos. Una vez que se pueda acceder a la base de datos, repárela utilizando la opción de nivel mínimo de reparación.
Nota: Las operaciones de reparación excluyen cualquier restricción aplicada a o entre tablas. Por lo tanto, si alguna de las tablas tiene una o más restricciones, debe ejecutar DBCC CHECKCONSTRAINTS después de una operación de reparación.
¿Cómo utilizar el comando DBCC CHECKDB?
Antes de utilizar DBCC CHECKDB, veamos su sintaxis.
Sintaxis:
DBCC CHECKDB [ ( db_name | db_id | 0 [ , NOINDEX | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ] ) ] [ WITH { [ ALL_ERRORMSGS ] [ , EXTENDED_LOGICAL_CHECKS ] [ , NO_INFOMSGS ] [ , TABLOCK ] [ , ESTIMATEONLY ] [ , { PHYSICAL_ONLY | DATA_PURITY } ] [ , MAXDOP = number_of_processors ] } ] ] |
Existen algunas opciones que puede utilizar para realizar comprobaciones de consistencia de la base de datos mediante DBCC CHECKDB. Estas opciones son las siguientes:
- nombre_base_de_datos | id_base_de_datos | 0: Especifica el nombre o el ID de la base de datos contra la que necesita ejecutar comprobaciones de integridad. Si no se especifica ‘nombre_base_datos’ o ‘id’ y se especifica ‘0’, se utilizará por defecto la base de datos actual.
- NOINDEX: Este argumento sólo realiza comprobaciones lógicas para reducir el tiempo total de ejecución. Además, no incluye índices no agrupados en las comprobaciones.
-
REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD: Para reparar una base de datos, debe ejecutar el comando DBCC CHECKDB con cualquiera de estas opciones de reparación:
- REPAIR_ALLOW_DATA_LOSS: Utilice esta opción de reparación como último recurso para reparar una base de datos SQL, ya que puede provocar la pérdida de datos.
- REPARACIÓN_RÁPIDA: Esta opción de reparación no realiza ninguna acción de reparación. Ayuda a mantener la sintaxis para la compatibilidad con versiones anteriores.
- REPAIR_REBUILD: La opción REPAIR_REBUILD ayuda a reparar la base de datos sin pérdida de datos. Se puede utilizar para reparar filas que faltan en índices no agrupados y para reconstruir un índice.
- ALL_ERRORMSGS: Este argumento muestra todos los mensajes de error de cada objeto.
- EXTENDED_LOGICAL_CHECKS: A partir de SQL Server 2016, no se realizan comprobaciones lógicas adicionales en índices y vistas filtrados. Para realizar las comprobaciones adicionales, debe utilizar la opción EXTENDED_LOGICAL_CHECKS.
- NO_INFOMSGS: La salida DBCC muestra mensajes informativos que no están relacionados con los errores de consistencia. La ejecución de _INFOMSGS puede desactivar los mensajes informativos.
- TABLOCK: Utiliza bloqueos en lugar de instantáneas internas de la base de datos para realizar comprobaciones de coherencia en una base de datos.
- ESTIMATEONLY: Especifica el espacio estimado que necesita la base de datos ‘tempdb’ para ejecutar el comando CHECKDB.
- PHYSICAL_ONLY: Limita las comprobaciones de consistencia en la estructura física de la página de base de datos, reduciendo el tiempo de ejecución de DBCC CHECKDB en bases de datos grandes.
- DATA_PURITY: Ayuda a comprobar una base de datos en busca de valores de columna no válidos o fuera de rango.
Requisitos previos para ejecutar DBCC CHECKDB
Debe asegurarse de que su sistema cumple los siguientes requisitos previos antes de ejecutar DBCC CHECKDB para realizar comprobaciones de consistencia en una base de datos o repararla.
- SQL Server Management Studio (SSMS) debe estar instalado en su máquina.
- El usuario debe tener privilegios de Administrador.
Pasos para utilizar DBCC CHECKDB para reparar bases de datos SQL
Abra SSMS y siga estos pasos para reparar la base de datos SQL utilizando DBCC CHECKDB:
Nota: En los pasos que se indican a continuación, utilizaremos database_name como Dbtesting. Asegúrese de sustituir DBtesting por el nombre de su base de datos.
Paso 1: Poner la base de datos en modo de emergencia
Cambie el estado de la base de datos al modo EMERGENCIA, que proporciona un acceso de sólo lectura al administrador. Para poner la base de datos en modo EMERGENCIA, ejecute la siguiente consulta en SSMS:
ALTER DATABASE [Dbtesting] SET EMERGENCY
Paso 2: Comprobar si hay errores de corrupción
Una vez que el administrador pueda acceder a la base de datos, ejecute el siguiente comando DBCC CHECKDB para analizar los errores de corrupción en la base de datos:
DBCC CHECKDB (Dbtesting)
Si DBCC CHECKDB detecta algún error en la base de datos, recomendará las opciones de reparación adecuadas para solucionar el problema.
Paso 3: Configurar la base de datos SQL Server en modo SINGLE_USER
Antes de utilizar las opciones de reparación de DBCC CHECKDB, ponga la base de datos dañada en modo SINGLE_USER para evitar que otros usuarios modifiquen los datos durante el proceso de reparación. Para poner el modo de base de datos SQL en SINGLE_USER, siga estos métodos:
Método 1: Uso de la interfaz gráfica de usuario (GUI)
Abra SSMS y realice estos pasos para configurar la base de datos en modo SINGLE_USER:
- Haga clic con el botón derecho del ratón en la base de datos que desea reparar y, a continuación, haga clic en Propiedades.
- En la ventana Propiedades de la base de datos, haga clic en Opciones.
- Haga clic en el cuadro desplegable Restringir acceso de la ficha Estado, seleccione la opción SINGLE_USER y, a continuación, haga clic en Aceptar.
Método 2: Uso de comandos Transact-SQL (T-SQL)
También puede establecer la base de datos en modo SINGLE_USER, ejecutando la siguiente consulta T-SQL en SSMS:
ALTER DATABASE Dbtesting SET SINGLE_USER
Paso 4: Reparar la base de datos
Una vez que haya cambiado el modo de base de datos a SINGLE_USER, ejecute DBCC CHECKDB con la opción de reparación REPAIR_ALLOW_DATA_LOSS para reparar la base de datos SQL server.
DBCC CHECKDB (N ‘Dbtesting’, REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS, NO_INFOMSGS;
IR AREPARAR_PERMITIR_PÉRDIDA_DE_DATOS
Nota: Aunque la opción de reparación REPAIR_ALLOW_DATA_LOSS ayuda a reparar todos los errores notificados en la base de datos de SQL Server, no es la mejor opción para reparar la corrupción de la base de datos. Esta opción de reparación provoca la pérdida de datos. De hecho, Microsoft recomienda utilizar la opción REPAIR_ALLOW_DATA_LOSS como último recurso cuando no se puede restaurar una base de datos desde la copia de seguridad. Si no dispone de una copia de seguridad y no puede arriesgarse a perder datos, utilice un software de reparación de MS SQL especializado para reparar la base de datos sin que se produzca ninguna pérdida en la integridad de la base de datos.
Paso 5: Devolver la base de datos al modo MULTI_USUARIO
Después de reparar la base de datos con éxito, configure la base de datos en modo MULTI_USUARIO ejecutando el siguiente comando:
ALTER DATABASE Dbtesting SET MULTI_USER
¿Qué hacer cuando DBCC CHECKDB falla?
La ejecución del comando DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS puede requerir el borrado de algunas páginas de la base de datos, con la consiguiente pérdida de datos. Además, los comandos DBCC CHECKDB pueden fallar y devolver un error cuando se trata de archivos de base de datos SQL gravemente dañados.
En tal caso, utilice un software de reparación de MS SQL especializado, como Stellar Repair for MS SQL. El software repara bases de datos MS SQL gravemente dañadas y restaura todos sus componentes, manteniendo la integridad de la base de datos. El software de recuperación de SQL ayuda a restablecer el acceso a la base de datos con el mínimo esfuerzo manual y tiempo.
Características principales:
- Repara archivos de bases de datos MDF y NDF
- Recupera todos los componentes de la base de datos, incluidas tablas, claves, índices, procedimientos almacenados, etc.
- Permite recuperar registros borrados
- Recupera tablas SQL con compresión PAGE y ROW
- Admite la recuperación selectiva de objetos de base de datos
- Previsualiza los objetos de base de datos recuperables
Para conocer el funcionamiento completo del software, vea el vídeo
Conclusión
Una base de datos corrupta puede provocar tiempos de inactividad innecesarios y pérdida de datos. Para superar los errores relacionados con la base de datos, restaure la base de datos a partir de la copia de seguridad más reciente. Si la copia de seguridad actual de la base de datos no existe o si la propia copia de seguridad está dañada, puede utilizar la opción de reparación DBCC CHECKDB ‘REPAIR_ALLOW_DATA_LOSS’ para reparar la base de datos. Sin embargo, esta opción de reparación implica un riesgo de pérdida de datos. Además, es posible que DBCC CHECKDB no solucione el problema.
Utilice el software Stellar Repair for SQL para reparar bases de datos MS SQL y recuperar todos sus componentes con precisión, manteniendo la estructura de la base de datos y la integridad de los objetos de la base de datos.