Síntoma:

Ao usar DBCC CHECKDB con REPAIR_ALLOW_DATA_LOSS parámetro para reparar unha base de datos .MDF corrupta, como este:

DBCC CHECKDB(xxxx, 'REPAIR_ALLOW_DATA_LOSS')

ves a seguinte mensaxe de erro:

Msg 5125, nivel 24, estado 2, liña 2
Ficheiro 'C:Program FilesMicrosoft SQL ServerMSSQL12.SQL2014MSSQLDATAError1.mdf' parece que o sistema operativo truncou. O tamaño esperado é de 5120 KB pero o tamaño real é de 5112 KB.
Msg 3414, nivel 21, estado 1, liña 2
Produciuse un erro durante a recuperación, impedindo que a base de datos "Error1" (39:0) se restarting. Diagnostica os erros de recuperación e corrixaos ou restaura a partir dunha copia de seguranza coñecida. Se non se corrixen nin se esperan erros, póñase en contacto co soporte técnico.

onde "Error1" é o nome da base de datos MDF corrupta que se está a reparar.

Mensaxe 5125 o erro é máis un erro de asignación nin un erro de consistencia. Ocorre cando se elimina a parte da cola do ficheiro MDB, debido á corrupción dos datos.

Captura de pantalla da mensaxe de erro:

Explicación precisa:

Cando se elimina a parte da cola do ficheiro MDB, CHECKDB informará Mensaxe 5125 erro e intente solucionalo. Se a base de datos non se pode arranxar, producirase Mensaxe 3414 erro.

En realidade, a base de datos tamén se pode recuperar, se se utiliza o noso produto DataNumen SQL Recovery para facer a tarefa.

Ficheiros de mostra:

SQL Server versión Ficheiro MDF danado Arquivo MDF corrixido por DataNumen SQL Recovery
SQL Server 2014 Erro8.mdf Erro8_fixo.mdf

Referencias: