El archivo de base de datos maestra (MDF) es el archivo de base de datos principal en MS SQL Server que almacena todos los datos, incluidas vistas, tablas, procedimientos almacenados, claves externas y claves primarias. A veces, al abrir el archivo MDF, puede enfrentar un problema donde la base de datos de SQL Server no se puede abrir y encontrar un error, como el que se indica a continuación:
- Error de SQL Server 5171: MDF no es un archivo de base de datos primaria
- No se puede abrir el archivo xxxxx.mdf. Error del sistema operativo 5: (Se denegó el acceso)”
- ID de evento 824: SQL Server detectó un error de E/S basado en la consistencia lógica
- Msg 8114, Nivel 16, Estado 5, Línea 2: Error al convertir el tipo de dato varchar a numérico
Estos errores suelen ocurrir cuando hay corrupción en el archivo MDF. En este artículo, explicaremos las posibles razones detrás de la corrupción de archivos MDF y mostraremos cómo reparar archivos MDF corruptos y resolver el problema.
Causas de la corrupción en el archivo MDF
Existen diversas razones que pueden llevar a la corrupción en el archivo de base de datos de SQL Server (MDF). Algunas de las más comunes se indican a continuación:
Fallo del MS SQL Server o del sistema
El MS SQL Server o el sistema pueden fallar debido a problemas con el sistema operativo, hardware o software. Si el servidor o el sistema falla mientras se trabaja en el archivo MDF, puede dañar o corromper el archivo.
Cierre abrupto del sistema
Un corte de energía repentino o un apagado forzado del sistema mientras se está ejecutando SQL Server puede dañar el archivo MDF almacenado en su sistema.
Ataques de Malware o Virus
El malware o los virus también pueden dañar los archivos MDF y hacerlos inaccesibles. Generalmente ocurre cuando su sistema no cuenta con un software de protección antivirus o antimalware.
Problemas con la Unidad de Almacenamiento
Los sectores dañados en la unidad de almacenamiento o errores en el sistema de archivos pueden corromper los archivos de la base de datos SQL. Si la unidad está dañada, también puede causar corrupción en los archivos MDF.
Métodos para Resolver el Problema ‘La base de datos no se puede abrir’ Debido a la Corrupción del Archivo MDF
Si su archivo MDF está dañado, puede seguir los métodos mencionados a continuación para reparar y recuperar el archivo MDF corrupto, resolviendo así el problema “La base de datos no se puede abrir” en SQL Server.
Método 1: Restaurar el Archivo MDF Desde la Copia de Seguridad
Si ha creado una copia de seguridad de su archivo MDF, puede restaurar el archivo desde la copia de seguridad. Pero antes de restaurar, necesita verificar si su copia de seguridad está completa y es legible. Para esto, puede usar el comando RESTORE VERIFY ONLY. Si este comando muestra un mensaje de éxito, puede proceder a restaurar la copia de seguridad. Para esto, use el siguiente comando de Transact SQL:
BACKUP DATABASE [AdventureWorks2019] TO DISK = N’C:\backups\AdventureWorks2019.bak’ WITH NOFORMAT, NOINIT, NAME = N’AdventureWorks2019-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
Alternativamente, puedes usar el SQL Server Management Studio (SSMS) para restaurar la copia de seguridad.
Método 2: Usa el Comando DBCC CHECKDB
Si la copia de seguridad no está actualizada o hay un problema al restaurar el archivo de copia de seguridad, entonces puedes usar el comando DBCC CHECKDB para reparar el archivo MDF corrupto. Para reparar el archivo de la base de datos, asegúrate de tener derechos de administrador en la base de datos. Antes de reparar, establece la base de datos en modo de usuario único usando el siguiente comando:
ALTER DATABASE Dbtesting SET SINGLE_USER
Si no puedes establecer la base de datos en modo SINGLE_USER
, verifica que la opción AUTO_UPDATE_STATISTICS_ASYNC esté configurada en OFF
.
A continuación, ejecuta el comando DBCC CHECKDB
como se muestra a continuación para reparar el archivo de la base de datos (MDF):
DBCC CHECKDB (N ’Dbtesting’, REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS, NO_INFOMSGS
GO
Cuando la base de datos esté reparada, restablécela en modo MULTI_USER
usando el siguiente comando:
ALTER DATABASE Dbtesting SET MULTI_USER
Nota: El comando DBCC CHECKDB
puede ayudarte a reparar el archivo MDF. Sin embargo, al reparar el archivo, puede desasignar páginas o filas, lo que puede resultar en pérdida de datos.
Método 3: Usa una Herramienta Profesional de Reparación de SQL
Reparar la base de datos SQL utilizando el comando DBCC CHECKDB
con la opción REPAIR_ALLOW_DATA_LOSS
puede resultar en pérdida de datos. Para evitar la pérdida de datos, puedes usar un potente software de reparación de MS SQL, como Stellar Repair for MS SQL. Este software puede reparar archivos MDF corruptos y restaurar todos los objetos del archivo, como claves primarias, tablas, triggers, vistas, etc., sin cambiar la estructura original. Guarda los datos del archivo reparado en un nuevo archivo MDF y en varios otros formatos, como CSV, HTML y XLS. El software es compatible con archivos de bases de datos SQL (MDF y NDF) creados en sistemas Windows y Linux.
Para Concluir
El problema ‘La base de datos no se puede abrir’ en MS SQL Server puede ocurrir debido a corrupción en el archivo MDF. Para solucionar este problema, la forma más sencilla es restaurar el archivo MDF desde la última copia de seguridad. Si el archivo de copia de seguridad está obsoleto o no funciona, puedes usar el comando DBCC CHECKDB
para reparar el archivo MDF corrupto. Si el comando DBCC CHECKDB
no puede reparar la base de datos, entonces usa una potente herramienta de reparación de SQL, como Stellar Repair for MS SQL. Puede reparar archivos MDF corruptos y restaurar todos los datos a un nuevo archivo MDF con completa integridad. Puedes instalar la versión gratuita de Stellar Repair for MS SQL para escanear el archivo MDF corrupto y previsualizar los datos recuperables.
Source:
https://dzone.com/articles/resolve-sql-server-database-cannot-be-opened-mdf-issue