• Domingo 22 de Diciembre de 2024, 17:33

Autor Tema:  ¿como Saber Si Una Bd Está Corrupta?  (Leído 3348 veces)

Escalona

  • Miembro activo
  • **
  • Mensajes: 63
    • Ver Perfil
¿como Saber Si Una Bd Está Corrupta?
« en: Viernes 6 de Octubre de 2006, 14:28 »
0
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_

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: ¿como Saber Si Una Bd Está Corrupta?
« Respuesta #1 en: Viernes 6 de Octubre de 2006, 17:36 »
0
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
  1.  
  2. Private Function ObtenerMD5(ByVal fichero As String) As String
  3.         Dim cadenaMD5 As String = ""
  4.         Dim cadenaFichero As FileStream
  5.         Dim bytesFichero As [Byte]()
  6.         Dim MD5Crypto As New MD5CryptoServiceProvider
  7.         cadenaFichero = File.Open(fichero, FileMode.Open, FileAccess.Read)
  8.         bytesFichero = MD5Crypto.ComputeHash(cadenaFichero)
  9.         cadenaFichero.Close()
  10.         For Each datos As Byte In bytesFichero
  11.             If datos < 16 Then
  12.                 cadenaMD5 &= "0" & datos.ToString("X")
  13.             Else
  14.                 cadenaMD5 &= datos.ToString("X")
  15.             End If
  16.         Next
  17.         Return cadenaMD5
  18. End Function
  19.  
  20.  
  21.  

Un saludo.

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: ¿como Saber Si Una Bd Está Corrupta?
« Respuesta #2 en: Viernes 6 de Octubre de 2006, 20:45 »
0
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)
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_

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: ¿como Saber Si Una Bd Está Corrupta?
« Respuesta #3 en: Sábado 7 de Octubre de 2006, 19:42 »
0
Bastante más simple y útil que lo que se me había ocurrido a mi  :P

Escalona

  • Miembro activo
  • **
  • Mensajes: 63
    • Ver Perfil
Re: ¿como Saber Si Una Bd Está Corrupta?
« Respuesta #4 en: Lunes 9 de Octubre de 2006, 09:08 »
0
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á.

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: ¿como Saber Si Una Bd Está Corrupta?
« Respuesta #5 en: Lunes 9 de Octubre de 2006, 16:48 »
0
Citar
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á.
Debes de colocar la llamada a la rutina que copia la base de datos antes de abrirla para efectuar otro tipo de procesos, por ejemplo en la parte más alta del Sub Form_Load de la primera forma que abres. De manera alternativa puedes hacer una rutina que cierre todas las bases de datos y los Forms abiertos y entonces hacer la copia de la base de datos.
 :comp: