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)
-   -   Firebird y campos BLOB (https://www.clubdelphi.com/foros/showthread.php?t=70529)

DamianG 26-10-2010 14:01:22

Firebird y campos BLOB
 
Hola a todos, tengo algunas tablas en mi base datos con algunos campos del tipo BLOB, por ej. tengo una tabla llamada CLIENTES donde un solo campo esta denominado OBSERV del tipo BLOB y ahi guardo anotaciones...

Este tipo de datos pueden corromper la tabla? pregunto esto porque me paso que en un cliente les daba el mensaje "Internal gds software consistency check" y tuve que repararla para poder sacar la informacion y perdi un par de tablas, no la de clientes, pero mientras queria hacer el gbak despues de haber hecho un gfix .. me decia "blob not found"...

Y por último si no uso blob para guardar textos, que tipo de datos recomiendan para esto? no me ha quedado muy claro cuantos caracteres guardar en varchar.

Gracias!

Casimiro Notevi 26-10-2010 17:24:54

Depende de la versión de firebird, pero en cualquier caso son miles de caracteres.
Evidentemente los campos blob, ni de ningún tipo, no pueden estropear una tabla.
Se te ha estropeado la base de datos y ha "pillado" esa tabla, por casualidad. Aunque es bien difícil que se estropee una BD firebird.

duilioisola 26-10-2010 22:49:17

Yo guardo notas en la tabla de clientes, en la de pedido, albaran, factura, en cada una de sus linea...
Los campos blob no estropean la base de datos.
Lo que estropea la base de datos es:
- copiarla mientras un cliente la tiene abierta (hacer backups de esta manera es muuuy malo)
- en Windows deshabilitar el "forced write". Si se cae el servidor, estás frito!
- que un cliente se conecte a la base mientras haces un restrore

Casimiro Notevi 26-10-2010 22:53:31

Cita:

Empezado por duilioisola (Mensaje 380531)
Lo que estropea la base de datos es:
- copiarla mientras un cliente la tiene abierta (hacer backups de esta manera es muuuy malo)

No afecta para nada si se está haciendo mediante gbak. Lo que sí la estropeará con casi total seguridad es si la copias->pegas (por ejemplo) con gente conectada a ella.

DamianG 26-10-2010 23:57:57

O sea que con un simple xcopy del archivo fdb o copiar y pegar a travez del explorador mientras estan trabajando la puedo romper ???. Hace rato que hago eso!!! no justamente en este caso...

Casimiro Notevi 27-10-2010 00:26:48

Cita:

Empezado por DamianG (Mensaje 380541)
O sea que con un simple xcopy del archivo fdb o copiar y pegar a travez del explorador mientras estan trabajando la puedo romper ???. Hace rato que hago eso!!! no justamente en este caso...

Por supuesto, está abierta y se están grabando datos.

Sin embargo, si usas gbak, éste lo hace en una transacción que no afecta al resto de conexiones.

duilioisola 27-10-2010 09:38:49

De la Web de Firebird:

Como corromper una base de datos en la web de Firebird.

Respaldo (Backup)
Lee sobre todo el primer aviso
Cita:

Aviso
No use utilidades externas de respaldo propietarias o herramientas de copia de archivos tales como WinZip, tar, copy, xcopy, etc., en una base de datos que esté en uso. No sólo el respaldo será poco confiable, también el bloqueo a nivel de disco usado por estas herramientas puede corromper una base de datos en marcha.

Delfino 02-11-2010 15:19:15

Cita:

Empezado por duilioisola (Mensaje 380531)
Lo que estropea la base de datos es:
- copiarla mientras un cliente la tiene abierta (hacer backups de esta manera es muuuy malo)

Hacer el backup no afecta en nada a la BD. Ya q se hace de un snapshot de la BD al comenzar el backup..

Casimiro Notevi 02-11-2010 15:51:36

Cita:

Empezado por Delfino (Mensaje 381079)
Hacer el backup no afecta en nada a la BD. Ya q se hace de un snapshot de la BD al comenzar el backup..

Siempre y cuando se use una utilidad como gbak o alguna herramienta similar.

DamianG 27-04-2011 18:33:24

problemita
 
Retomo este hilo, me pasa que al leer los datos de la tabla de un campo BLOB, me salen caracteres ilegibles,

por ej. en la nota tengo 'cobrar mesa que esta pendiente'

si pongo xxx := datafb.query1.fieldbyname('observ').asstring me devuelve solo una 'c ' y si pongo

xxx:= datafb.query1.fieldbyname('observ').value me lo devuelve bien 'cobrar mesa que esta pendiente'...

ahora podria usar el .value pero me pasa que con los datos nuevos que agrego, en las altas despues con el .value tambien los lee mal y aparecen simbolos chinos........

si pueden ayudarme les agradezco!!

saludos!

arrayman 05-05-2011 23:22:58

hola yo no se mucho de esto pero como veo que a pasado una semana te voy a decir que puedes intentar.

prueba que no estes usando un juego de caracteres incorrecto.
prueba ha hacer una copia con gback y a restaurarla en el servidor
de produccion, quiza has cambiado la version de firebird. hacia adelante
no deberia importar crea que mantiene compatibilidad atras pero si disminuyes de version quizas el osd o ods o algo asi. la estructura del
archivo fdb puede no ser la correcta.
no se si dispones de alguna herramienta que te permita introducir
texto en un campo blob pero puedes probar a ver si tambien te pasa
con mas programas cliente. en fin son cosas que no deben hacerte daño
y es posible que o lo resulvan o te arrojen algo de luz
y sobre todo si lo solucionas dinos como y todos aprenderemos.

un saludo y suerte.


La franja horaria es GMT +2. Ahora son las 21:54:46.

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