Contenido
- Antes de que comencemos
- Métodos para reparar la base de datos de SQL Server con un archivo de registro corrupto
- Conclusión
Una base de datos en SQL Server consta de tres tipos de archivos: archivo de datos principal (.mdf), archivo de datos secundario (.ndf) y archivo de registro de transacciones o archivo de base de datos de registro (.ldf).
Los archivos de datos primarios y secundarios se utilizan para almacenar información sobre objetos de la base de datos como tablas, índices, disparadores, vistas, etc. Por otro lado, el archivo de registro registra todas las transacciones y los cambios realizados en la base de datos por cada transacción. La corrupción en cualquiera de estos archivos de datos o en el archivo de registro puede hacer que la base de datos sea inaccesible. En este blog, sin embargo, restringiremos nuestra discusión sobre la corrupción del archivo de registro y los métodos para reparar un archivo .ldf dañado.
Antes de que comencemos
Antes de analizar los métodos para arreglar una base de datos SQL con un archivo de registro corrupto, es importante determinar las razones que llevaron a tal problema en primer lugar.
¿Qué causa la corrupción en un archivo de registro de transacciones?
Algunas razones posibles que pueden resultar en la corrupción del archivo de registro son las siguientes:
- Cierre anormal del sistema : El sistema finalizó de manera anormal, debido a un corte de energía u otras razones, sin un cierre limpio de la base de datos.
- Problema de tamaño de almacenamiento : El archivo de registro de transacciones tiene un espacio de almacenamiento limitado y exceder su límite aumenta las posibilidades de corrupción.
- Problema de hardware o memoria defectuosa : Ocurrió una falla de hardware con el subsistema de E/S utilizado para alojar los archivos del sistema y de la base de datos, o memoria defectuosa.
- Contagio de virus: El sistema que aloja la base de datos del servidor SQL se ve afectado por un ataque de virus, lo que da como resultado un archivo de registro corrupto.
Errores que puede encontrar debido a la corrupción del archivo de registro
Error 1: mensaje de error 15105
Error 23 del sistema operativo (no se pudo recuperar el texto de este error. Motivo: 15105) en el archivo “C:Program FilesMicrosoft SQL ServerMSSQL10_50.MYSERVERMSSQLDATAMY_DATABASE.ldf” durante CheckLogBlockReadComplete
Error 2: no se pudo adjuntar el archivo de registro
Al intentar adjuntar un archivo de registro en un nuevo SQL Server, puede recibir un error:
“No se pudo abrir la nueva base de datos ‘Your_DatabaseName’. Se aborta CREATE Database”.
Error 3: falla de activación del archivo (error del archivo de ubicación)
Fallo en la activación del archivo. El nombre de archivo físico ‘C:Program FilesMicrosoft SQL ServerMSSQL13.MSSQLSERVERMSSQLDATAXXX.ldf’ puede ser incorrecto. Diagnostique y corrija errores adicionales y vuelva a intentar la operación.
FileMgr::StartLogFiles: se produjo el error 2 del sistema operativo (el sistema no puede encontrar el archivo especificado) al crear o abrir el archivo ‘E:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLDATAxxx.ldf’. Diagnostique y corrija el error del sistema operativo y vuelva a intentar la operación.
Métodos para reparar la base de datos de SQL Server con un archivo de registro corrupto
NOTA: Compruebe los registros de errores y los registros de eventos de SQL Server del sistema Windows y la aplicación que aloja la base de datos. Si encuentra algún problema de hardware, repárelo y vea si el problema de corrupción se ha resuelto o no. De lo contrario, aplique los siguientes métodos para reparar el archivo de registro dañado.
Método 1: restaurar la base de datos desde una buena copia de seguridad
NOTA: Si no tiene configurada una estrategia de copia de seguridad adecuada o los archivos de copia de seguridad se pierden, pase al método 2.
El enfoque simple y seguro para solucionar el problema de corrupción del archivo de registro es restaurar la base de datos desde la última copia de seguridad de la base de datos en un momento dado.
Veamos los pasos para restaurar la base de datos de SQL Server desde una copia de seguridad completa de la base de datos:
- Abierto Estudio de administración de SQL Server (SSMS) y conéctese a SQL Server.
- Expanda la carpeta Bases de datos en Explorador de objetos.
- Haga clic derecho en el Base de datos seleccionar Restaurar base de datos .
- En Restaurar base de datos ventana, debajo Fuente para restaurar sección, seleccione desde el dispositivo, y luego haga clic en el botón junto a él para especificar la ubicación del archivo de la base de datos.
- En Especificar copia de seguridad ventana, seleccione Medios de copia de seguridad escriba y luego haga clic en Agregar para insertar la ubicación del archivo de copia de seguridad.

- Seleccione el archivo de copia de seguridad que necesita restaurar y haga clic en DE ACUERDO .
- De nuevo, haga clic en DE ACUERDO .

- El archivo de copia de seguridad aparecerá en la ventana de restauración de la base de datos.
- Antes de restaurar la copia de seguridad, seleccione Opciones en Seleccione una página sección en el Restaurar base de datos ventana.
- Seleccione una de las casillas de verificación debajo Opciones de restauración sección. Hacer clic DE ACUERDO .
Método 2: reconstruir el archivo de registro de transacciones dañado
Intente reconstruir el archivo de registro corrupto para volver a acceder a la base de datos. Para hacerlo, sigue estos pasos:
- Ponga la base de datos en MODO DE EMERGENCIA usando el siguiente comando:
ALTER DATABASE SET EMERGENCY, SINGLE_USER GO
Ejecutar el comando anterior ayudará a abrir la base de datos sin un archivo de registro de transacciones.

- Una vez que la base de datos esté activa y configurada en modo SINGLE_USER, ejecute el comando DBCC CHECKDB con la opción REPAIR_ALLOW_DATA_LOSS para reparar la base de datos con un archivo de registro corrupto:
NOTA: Antes de continuar con el proceso de reparación, asegúrese de crear copias de seguridad de su base de datos. Esto se debe a que la opción REPAIR_ALLOW_DATA_LOSS implica riesgo de pérdida de datos .
DBCC CHECKDB ('TestTRNLogCorrupt', REPAIR_ALLOW_DATA_LOSS)
Si la corrupción todavía está allí, use el siguiente comando para reconstruir el archivo de registro. Ponga la base de datos en modo sin conexión y cambie el nombre del archivo de registro dañado asociado a ella. Ahora, ejecuta el siguiente comando:
ALTER DATABASE [original_log_file_name] REBUILD LOG ON (NAME= logicalname, FILENAME='C:Program FilesMicrosoft SQL ServerMSSQLn.MSSQLSERVERMSSQLDATAfile_name.ldf')
Método 3: use Stellar Repair para el software MS SQL
Si aún no puede acceder a su base de datos, el uso de la herramienta de reparación de bases de datos SQL puede ayudar. El software repara el archivo .mdf y crea un nuevo archivo de registro (.ldf).
Pasos para usar Stellar Repair para el software MS SQL
- Descargar, instalar y ejecutar Reparación estelar para MS SQL software.

- Se muestra la ventana de instrucciones. Siga las instrucciones y haga clic DE ACUERDO .

- En Seleccionar base de datos ventana, haga clic Navegar para seleccionar el archivo MDF corrupto que desea reparar.
NOTA : Si no conoce la ubicación del archivo MDF, haga clic en ‘Buscar’ para buscar y seleccionar el archivo.

- Una vez seleccionado el archivo, haga clic en Reparar para iniciar el proceso de reparación.
- El software proporciona una vista previa del archivo de base de datos reparado en una lista de vista de árbol en el panel izquierdo de la ventana Vista previa.

- Seleccione todos los objetos de la base de datos o los específicos que desee recuperar y, a continuación, haga clic en Ahorrar en Hogar menú.
- En Guardar como ventana, seleccione MDF bajo Guardar como sección. A continuación, elija si desea guardar el archivo de base de datos reparado en ‘Nueva base de datos’ o ‘Base de datos en vivo’.

- Complete los detalles requeridos en Conectar al servidor sección y luego haga clic en Ahorrar .
Conclusión
El archivo de registro de transacciones de la base de datos de SQL Server se corrompe debido a varias razones, incluido el apagado incorrecto de la base de datos, fallas de hardware, archivos LDF de gran tamaño y ataques de virus. Un archivo de registro corrupto puede hacer que la base de datos sea inaccesible.
Puede intentar restaurar la base de datos desde la última copia de seguridad buena conocida. Pero tenga en cuenta que la restauración de la base de datos a partir de una copia de seguridad puede provocar la pérdida de datos según la estrategia de recuperación implementada.
Si la copia de seguridad no está disponible o ha fallado, puede intentar reconstruir el archivo de registro corrupto usando el comando DBCC CHECKDB. Pero este comando tiene ciertas limitaciones. Es posible que no pueda reparar una base de datos de SQL Server gravemente dañada y devuelva un error. Por ejemplo, puede recibir el siguiente error al intentar reparar un archivo de base de datos gravemente dañado:

Además, ejecutar el comando DBCC CHECKDB con la opción REPAIR_ALLOW_DATA_LOSS da como resultado la pérdida de datos.
Si ninguno de los métodos funciona, utilice Reparación estelar para SQL software para reparar archivos de registro corruptos y solucionar problemas de la base de datos SQL, sin riesgo de pérdida de datos.
Preguntas más frecuentes
q He estado recibiendo el error “Copia de seguridad del registro de transacciones” fallida. ¿Puedo usar el comando DBCC CHECKDB para buscar problemas con la copia de seguridad del registro de transacciones?
Respuesta. No, DBCC CHECKDB no verifica el archivo de registro de transacciones.
q ¿Hacer una copia de seguridad completa restablece la copia de seguridad del registro?
Respuesta. No, hacer una copia de seguridad completa no restablece la copia de seguridad del registro.
q ¿Cuál es la diferencia entre el comando ‘DBCC CHECKDB usado con la opción REPAIR_ALLOW_DATA_LOSS’ y el comando ‘ALTER DATABASE REBUILD LOG ON’?
Respuesta: El comando DBCC CHECKDB con la opción REPAIR_ALLOW_DATA_LOSS verifica la base de datos en busca de cualquier error de inconsistencia. El comando primero intenta usar el archivo de registro para recuperarse de cualquier incoherencia de la base de datos. En segundo lugar, si falta el registro, ayuda a reconstruir el archivo de registro de transacciones.
El comando ALTER DATABASE REBUILD LOG no funcionará si hubo transacciones abiertas (no escritas en el disco) cuando el archivo de registro se vuelve inaccesible.