Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   internal gds software consistency check (https://www.clubdelphi.com/foros/showthread.php?t=74598)

davichu 28-06-2011 16:11:34

internal gds software consistency check
 
Hola a todos, tengo un problema con una base de datos en firebird 2.1
Al intentar hacer un backup me devuelve el error:

internal gds software consistency check (decompression overran buffer (179) file: sqz.cpp line: 231)

El error lo da cuando llega a una tabla concreta: ASIENTOS

He intentado hacer los pasos habituales con GFIX y GBAK pero nada, lo he intentado de mil maneras.
Con el software FBFirstAID, no me detecta el problema.

Investigando, he ido haciendo selects sobre la tabla asientos y veo que me da el mismo error al hacer un select que incluya a dos registros concretos. Son correlativos. Con todos los demás no hay problemas.

Alguien sabe como puedo solucionar el problema, no se si se puede editar de alguna forma los datos a bajo nivel y eliminar estos registros o hay alguna otra forma.

Gracias.
David

Casimiro Notevi 28-06-2011 17:14:16

Puedes crear una BD igual, extrayendo su metadata y luego con IBPump copiar todos los datos menos esos registros.
Si necesitas explicación... aquí estamos.

davichu 29-06-2011 10:46:20

internal gds software consistency check
 
Hola Casimiro gracias por la respuesta. Esta opción ya la comprobé y el problema es que cuando llega a esa tabla, exporta los primeros registros y cuando llega a los dañados se para el proceso, independientemente de lo que le marque en la opción de "stop after..."
Aparentemente este es un caso típico en el que un simple GFIX y su posterior GBAK solucionan el problema, pero por algún motivo no funciona.
Yo se que algunas empresas arreglan estas cosas, pero claro cobrando una buena pasta.

Casimiro Notevi 29-06-2011 11:14:39

Puedes "personalizar" esa tabla poniendo un select sql que excluya ambos registros, entonces se los saltará. Algo así como:
Código SQL [-]
select * from tutabla where codigo not in (123, 444, etc.)
Así no procesará esos registros.

guillotmarc 29-06-2011 13:43:01

Cita:

Empezado por davichu (Mensaje 405120)
Aparentemente este es un caso típico en el que un simple GFIX y su posterior GBAK solucionan el problema, pero por algún motivo no funciona.
Yo se que algunas empresas arreglan estas cosas, pero claro cobrando una buena pasta.

Como dices, es un caso típico, se te ha corrompido la base de datos.

Pero un simple GFIX y el posterior GBAK solo solucionan el problema en algunas ocasiones (las menos). Todo depende de lo que se haya estropeado (estructura, datos, índices, etc. ...).

Si puedes solventarlo con un GFIX / GBAK te puedes dar con un canto en los dientes, igual que si lo puedes recuperar volcando los datos (exceptuando esos dos registros).

Para esto están las copias de seguridad, para poder recuperar los datos si se estropean. Cuando no tienes copias de seguridad es cuando juegas con fuego y puedes acabar teniendo que contratar una empresa para que te repare una base de datos.

Saludos.


La franja horaria es GMT +2. Ahora son las 00:26:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi