Programación General > Visual Basic 6.0 e inferiores
¿como Saber Si Una Bd Está Corrupta?
Escalona:
Bueno mi problema es ese, tengo una aplicacion que usa una BD creada en Access, cada cierto tiempo voy creando Backups de esa Base de Datos, pero claro, antes de generar el Backup me gustaria saber si la BD está o no corrupta para evitar hacer Backups e una BD en mal estado.
Bueno a ver si se os ocurre alguna manera de hacerlo. Gracias!
lois_:
Puedes usar el checksum del archivo, almacenandolo con cada registro y comparandolo antes de cada registro. La suma se puede obtener de muchas formas, yo te pasteo aquí una función:
--- Código: Text --- Private Function ObtenerMD5(ByVal fichero As String) As String Dim cadenaMD5 As String = "" Dim cadenaFichero As FileStream Dim bytesFichero As [Byte]() Dim MD5Crypto As New MD5CryptoServiceProvider cadenaFichero = File.Open(fichero, FileMode.Open, FileAccess.Read) bytesFichero = MD5Crypto.ComputeHash(cadenaFichero) cadenaFichero.Close() For Each datos As Byte In bytesFichero If datos < 16 Then cadenaMD5 &= "0" & datos.ToString("X") Else cadenaMD5 &= datos.ToString("X") End If Next Return cadenaMD5End Function
Un saludo.
cpmario:
Cuando la base de datos está corrupta al abrirla se generará un error, por ejemplo en DAO 35 el error se muestra así:
--- Citar ---Imposible abrir la base de datos <name>. Es posible que su aplicación no reconozca este tipo de base de datos o bien que el archivo esté dañado. (Error 3049)
--- Fin de la cita ---
Lo que debes hacer es abrir la base de datos, si se genera un error no la copies, si no hay error, cierra la base de datos y entonces procede a copiarla.
:comp:
lois_:
Bastante más simple y útil que lo que se me había ocurrido a mi :P
Escalona:
Sí, eso es lo que intente en un primer momento, el problema es que la BD es en ACCESS, y si algun otro proceso esta usando la BD en ese mismo instante, me da error al abrirla, de manera que interpretaría como una BD corrupta, a una que no lo está.
Navegación
[#] Página Siguiente
Ir a la versión completa