Summary: Lea este post para encontrar soluciones para recuperar la base de datos MS SQL marcado como sospechoso. Describe instrucciones paso a paso para solucionar el problema de "base de datos sospechosa de SQL Server" mediante la ejecución de comandos Transact-SQL (T-SQL) en SQL Server Management Studio (SSMS). Además, proporciona una solución alternativa para restaurar la base de datos mediante una herramienta de recuperación de SQL.
Cuando la base de datos SQL entra en modo sospechoso, se vuelve inaccesible. En tal situación, no podrá conectarse a la base de datos ni recuperarla durante el arranque del servidor.
Figura 1: Base de datos en modo sospechoso
Echa un vistazo a la infografía a continuación para soluciones rápidas para recuperar la base de datos de modo sospechoso en SQL Server 2008, y versiones superiores.
¿Cuándo pasa la base de datos SQL al modo sospechoso?
Cuando SQL Server sospecha que el grupo de archivos primario de la base de datos está dañado o si falta el archivo de la base de datos, el estado de la base de datos se establece en “Sospechoso”.
Además, hay una amplia gama de errores que podrían resultar en la base de datos SQL en modo sospechoso. Algunos de ellos se enumeran a continuación:
- El sistema no consigue abrir el dispositivo donde residen los datos o el archivo de registro del servidor SQL.
- El servidor SQL se bloquea o se reinicia en medio de una transacción, lo que da lugar a un archivo de registro de transacciones corrupto o inaccesible.
- SQL Server intenta abrir una base de datos, y el archivo perteneciente a esa base de datos ya está abierto por el software antivirus instalado en su sistema.
- La base de datos se cierra de forma anormal.
- Falta de espacio en disco.
- SQL no puede completar una operación de rollback o roll forward.
- Los archivos de la base de datos son retenidos por el sistema operativo, software de copia de seguridad de terceros, etc.
¿Cómo sacar la base de datos SQL del modo sospechoso?
NOTA: Puede intentar restaurar la base de datos en modo sospechoso a partir de una buena copia de seguridad conocida. Si la copia de seguridad no está disponible, proceda con los siguientes pasos.
Siga los pasos en la secuencia indicada a continuación para recuperar la base de datos MS SQL desde el modo sospechoso:
Paso 1: Abra SSMS y conéctese a la base de datos.
Figura 2: Conectarse a la base de datos
Paso 2: Seleccione la opción Nueva consulta.
Figura 3: Seleccionar nueva consulta
Paso 3: En la ventana del editor de consultas, introduzca el siguiente código para desactivar el indicador de sospechoso en la base de datos y ponerlo en EMERGENCIA:
EXEC sp_resetstatus ‘nombre_db’;
ALTER DATABASE db_name SET EMERGENCY
Figura 4: Configurar la base de datos en modo de emergencia
NOTA: Si no puede configurar la base de datos en modo de emergencia, pase a la siguiente solución.
Paso 4: Es posible que una base de datos sospechosa no esté dañada. Puede determinar si la base de datos está dañada o no ejecutando el siguiente comando DBCC CHECKDB.
DBCC CHECKDB (‘nombre_base_de_datos’)
Esta sentencia informará de cualquier error de consistencia (si se encuentra) en la base de datos y recomendará ejecutar la opción de nivel mínimo de reparación para arreglar la corrupción.
Antes de iniciar el proceso de reparación, debe poner la base de datos en “Modo de usuario único”. Esto impedirá que otros usuarios realicen cambios en la base de datos durante el proceso de reparación.
Figura 5: Comprobar la coherencia de la base de datos
Paso 5: Ahora, llevemos la base de datos al modo de Usuario Único y retrocedamos las transacciones anteriores ejecutando el siguiente comando:
ALTER DATABASE database_name SET SINGLE_USER WITH ROLLBACK IMMEDIATE
Figura 6: Configurar la base de datos en modo de usuario único
Paso 6: Tome una copia de seguridad completa de los archivos dañados para evitar posibilidades de pérdida de datos.
Paso 7: Después de poner la db en modo SINGLE USER, intente arreglar los errores de consistencia usando la opción REPAIR_REBUILD de DBCC CHECKDB. Esta opción puede reparar rápidamente filas perdidas en índices no agrupados. Además, puede utilizarla para operaciones de reparación que requieren más tiempo, como la reconstrucción de un índice.
DBCC CHECKDB (‘nombre_base_de_datos’, REPAIR_REBUILD)
Sin embargo, si se sugiere REPAIR_ALLOW_DATA_LOSS como nivel mínimo de reparación, ejecute DBCC CHECKDB con la opción de reparación sugerida. La sintaxis es la siguiente:
DBCC CHECKDB (‘nombre_base_de_datos’, REPAIR_ALLOW_DATA_LOSS)
Figura 7: Reparar base de datos con DBCC CHECKDB
Paso 8: Poner la base de datos en modo Multi-Usuario:
ALTER DATABASE database_name SET MULTI_USER
Figura 8: Configurar la base de datos en modo multiusuario
ALTER DATABASE database_name SET MULTI_USER
Paso 9: Actualice el servidor de base de datos.
Después de completar estos pasos, debería poder conectarse a la base de datos. En caso de pérdida de datos, tendrás la copia de seguridad de la base de datos para restaurarla (paso 6).
¿Y si esta solución no funciona?
Si el archivo de base de datos de su servidor se ha dañado gravemente, es posible que los pasos mencionados no consigan revivir la base de datos. En este punto, intente restaurar la base de datos utilizando Stellar Repair for MS SQL.
El software puede reparar errores comunes de corrupción de bases de datos SQL que se producen debido a razones tales como la base de datos en modo sospechoso y varios otros. El software utiliza algoritmos avanzados para reparar y restaurar SQL db de modo sospechoso a estado normal (en línea).
¿Cómo recuperar una base de datos SQL del modo sospechoso con la herramienta Stellar SQL Recovery?
NOTA: Asegúrese de cerrar la instancia del servidor antes de ejecutar el software Stellar Repair for MS SQL.
Paso 1: Descargue, instale y ejecute el software Stellar Repair for MS SQL.
Paso 2: En la ventana Seleccionar base de datos, elija Examinar o Buscar para seleccionar el archivo de base de datos SQL (.mdf) de la base de datos sospechosa.
Figura 9: Seleccionar archivo de base de datos
Paso 3: Una vez seleccionado el archivo, pulse Reparar.
Figura 10- Reparar el archivo seleccionado
NOTA: Asegúrate de desmarcar la casilla “Incluir registros eliminados” si no quieres que se recuperen los registros eliminados.
Paso 4: Vista previa del archivo MDF reparado en busca de objetos de base de datos SQL Server recuperables.
Figura 11: Ventana de vista previa
Paso 5: Haga clic en Guardar en el menú Archivo para guardar el archivo reparado.
Figura 12: Menú Archivo
Paso 6: Desde la ventana Guardar Base de Datos, realice lo siguiente:
- Seleccione MDF en Guardar como.
- Guarde el archivo reparado en Nueva base de datos o Base de datos activa.
- Rellene los datos en Conectarse al servidor.
Paso 7: Haga clic en Guardar.
Abra SSMS y adjunte la base de datos (que contiene el archivo MDF reparado). Podrá acceder a la base de datos.
Funciones adicionales del programa
- Repara archivos MDF y NDF corruptos.
- Recupera tablas, triggers, claves, índices, procedimientos almacenados, valores por defecto, reglas, esquemas, etc.
- Compatible con MS SQL 2019, 2017, 2016, 2014, 2012, 2008 R2 y versiones inferiores.
- Proporciona múltiples opciones para guardar la base de datos reparada, incluyendo MS SQL (MDF), CSV, HTML y XLS.
El software cuenta con la confianza de los MVP de Microsoft
Conclusión
Este post discute metodos sobre ‘Como recuperar una base de datos MS SQL desde modo sospechoso’. Lo mejor es restaurar la base de datos desde una copia de seguridad en buen estado. Si usted no tiene copia de seguridad, utilice el modo de emergencia para acceder a la base de datos y repararla. Sin embargo, es posible que no pueda revertir las transacciones que estaban activas cuando la base de datos entró en modo sospechoso. Además, utilizar la opción REPAIR_ALLOW_DATA_LOSS como nivel mínimo de reparación puede provocar la pérdida de datos. Una mejor alternativa es utilizar un software especializado de reparación de bases de datos SQL que ayude a reparar y restaurar la base de datos de sospechosa a un estado normal.