Summary: Este post se describen las razones por las que una base de datos (db) se marca en el estado pendiente de recuperación. También, se describen los métodos para arreglar 'base de datos de SQL Server en estado pendiente de recuperación' problema. Usted puede resolver el problema mediante la ejecución de consultas en SQL Server Management Studio (SSMS), o mediante el uso de Stellar Repair for MS SQL software.
Estados de la base de datos de SQL Server
Se considera que una base de datos SQL está dañada si uno o varios de sus archivos principales se encuentran en un estado inconsistente. Dependiendo de la gravedad del daño, la db se marca con diferentes estados. Algunos de estos estados son
- En línea – Si uno de los archivos de datos se daña al ejecutar una consulta o alguna otra operación, la base de datos permanecerá en línea y accesible.
- Sospechosa – Si una base de datos no puede ser recuperada durante el inicio de SQL Server, la base de datos se marca como Sospechosa.
- Pendiente de Recuperación – Si el Servidor SQL sabe que la recuperación de la base de datos necesita ser ejecutada pero algo está impidiendo que se inicie, el Servidor marca la db en estado ‘Pendiente de Recuperación’. Esto es diferente del estado SOSPECHOSO porque no se puede decir que la recuperación va a fallar – simplemente no se ha iniciado todavía.
Entendamos primero cómo se puede comprobar el estado actual de la base de datos.
¿Cómo comprobar el estado de la base de datos?
Para comprobar el estado actual de una base de datos SQL, ejecute la siguiente consulta:
SELECT name, state_desc from sys.databases
GO
La ejecución de la consulta le dará una salida parecida a la siguiente
Razones detrás del Estado Pendiente de Recuperación en SQL Server.
Algunas de las razones que causan este problema son
- La base de datos no se cerró correctamente y hay al menos una transacción no comprometida activa durante el cierre, lo que resulta en la eliminación del archivo de registro de transacciones activo.
- El usuario intentó mover los archivos de registro a una nueva unidad para superar los problemas de rendimiento del servidor, pero acabó corrompiendo los archivos de registro en el proceso.
- La recuperación de la base de datos no puede iniciarse debido a la insuficiencia de espacio de memoria o de almacenamiento en disco.
Métodos para solucionar el problema de recuperación pendiente en la base de datos de SQL Server
Nota: Antes de iniciar cualquiera de los siguientes procedimientos de reparación, asegúrese de hacer una copia de seguridad de la base de datos, para tener una copia a prueba de fallos en caso de que algo vaya mal.
Método 1 – Formas manuales de resolver la base de datos en estado pendiente
A continuación se presentan las dos formas manuales que ayudan a llevar la base de datos SQL en modo de recuperación al modo normal:
1. Marcar la base de datos en modo de emergencia e iniciar la reparación forzosa
El modo EMERGENCIA de la base de datos marca la base de datos como READ_ONLY, deshabilita el registro y concede acceso sólo a los administradores del sistema. Esencialmente, al poner la base de datos en este modo se puede poner en línea la base de datos inaccesible.
Nota: Normalmente una base de datos sale del modo de EMERGENCIA automáticamente. Si tiene problemas para restaurar la base de datos desde este modo, lea este artículo Recuperar base de datos SQL del modo de emergencia al modo normal.
Una vez que haya abierto la base de datos en modo EMERGENCIA, intente reparar la base de datos utilizando el comando DBCC CHECKDB con la opción ‘REPAIR_ALLOW_DATA_LOSS’. Para ello, abra SSMS y ejecute el siguiente conjunto de consultas:
ALTER DATABASE [DBName] SET EMERGENCY;
GO
ALTER DATABASE [DBName] set single_user
GO
DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;
GO
ALTER DATABASE [DBName] set multi_user
GO
2. Marcar la base de datos en modo de emergencia, separar la base de datos principal y volver a conectarla
Esta solución también requiere marcar la base de datos en modo de emergencia. Una vez hecho esto, saque la base de datos fuera de línea (detach) y luego póngala en línea (re-attach). Para ello, ejecute el siguiente conjunto de consultas en SSMS:
ALTER DATABASE [DBName] SET EMERGENCY;
ALTER DATABASE [DBName] set multi_user
EXEC sp_detach_db ‘[DBName]’
EXEC sp_attach_single_file_db @DBName = ‘[DBName]’, @physname = N'[mdf path]’
El conjunto de consultas anterior ayuda a que el servidor se deshaga del registro corrupto y construya uno nuevo automáticamente.
Método 2 – Utilizar el software Stellar Repair for MS SQL
Si los métodos anteriores no pueden ayudar a resolver el problema de la base de datos en estado pendiente de recuperación, utilice el software Stellar Repair for MS SQL. El software puede ayudarle a reparar los archivos de la base de datos corruptos y hacer que la base de datos vuelva a estar en línea desde el estado pendiente de recuperación rápidamente y sin problemas.
Pasos para utilizar el software Stellar Repair for MS SQL
- Descargue, instale y ejecute el software Stellar Repair for MS SQL.
- En la ventana Seleccionar base de datos, haga clic en Examinar o Buscar para seleccionar el archivo de base de datos que desea reparar.
- El software proporciona la opción de Escaneo Estándar y Escaneo Avanzado para escanear la base de datos corrupta.
- Haga clic en Reparar para iniciar el proceso de reparación.
- El software muestra una vista previa de todos los componentes db recuperables.
- Para guardar el archivo reparado y sus componentes, haga clic en Guardar en el menú Archivo.
- En la ventana de guardar la base de datos, haga lo siguiente:
1. Elija MDF en Guardar como.
2. Seleccione Nueva base de datos o Base de datos viva en Opción de guardar.
3. Introduzca los datos necesarios en la sección Conectar al servidor por autenticación o Autenticación de SQL Server.
- Haga clic en Examinar para elegir el destino para guardar el archivo reparado.
- Haga clic en Guardar.
- Cuando aparezca el cuadro de mensaje “Save Complete“, haga clic en OK.
El archivo reparado se guardará en la ubicación seleccionada.
Nota: Para obtener información detallada sobre el uso del software Stellar Repair for MS SQL, consulte esta guía del usuario.
Características principales de Stellar Repair for MS SQL
- Repara los archivos de bases de datos MS SQL (.mdf y .ndf) corruptos e inaccesibles.
- Recupera todos los componentes de la base de datos como tablas, claves, índices, disparadores, reglas y procedimientos almacenados, etc.
- Recupera los registros eliminados.
- Soporta MS SQL 2019, 2017, 2016, 2014, 2012, 2008, 2008 R2 y todas las versiones inferiores.
- El software cuenta con la confianza de los MVP de Microsoft.
Conclusión
Este post describe las razones detrás del problema ‘db en estado pendiente de recuperación’ como la base de datos no se cierra limpiamente, los archivos de la base de datos (.mdf o .ndf) se volvieron corruptos, insuficiente memoria o espacio en disco. También describió los métodos para arreglar el estado pendiente de recuperación en la base de datos de SQL Server.
Usted puede arreglar la base de datos poniéndola en estado de emergencia, e iniciando el proceso de reparación o desligando y volviendo a ligar la db. Pero, tales soluciones tienen sus propias desventajas:
- Sólo puede resolver problemas menores de la base de datos.
- No asegura la recuperación completa de la base de datos.
- Implica un riesgo de pérdida de datos, en particular, la ejecución del comando ‘REPAIR_ALLOW_DATA_LOSS’ puede eliminar algunos datos.
Puede superar estas limitaciones utilizando el software Stellar Repair for MS SQL. El software ayuda a los usuarios de SQL y a los administradores de bases de datos (DBA) a solucionar errores graves de corrupción de bases de datos. Además, garantiza la recuperación completa de los componentes de la base de datos, preservando la integridad de los datos