Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-01-2009
fredycc fredycc is offline
Miembro
 
Registrado: nov 2008
Posts: 18
Poder: 0
fredycc Va por buen camino
Interbase server crash!

Tengo una aplicación donde intento insertar un blob, en este caso una imagen; al intentar insertar archivos mayores a 64 Kb aprox. el servidor de interbase se congela totalmente y ya no responde si quiera el administrador en este caso el IBExpert; solo cuando finalizo la aplicacion el servidor de interbase regresa.

Ahora bien ya lo he probado con la version de interbase 7.5.1 y la 2009 pero el resultado es el mismo; la version de Delphi que utilizo es Delphi 2007 .Net, el mismo StoredProcedure en la base de datos lo pruebo desde el IBExpert y funciona perfectamente; pero cuando mi aplicacion lo intenta hacer el servidor de Interbase ya no responde.

Les agradecería su valioso apoyo, gracias.

La tabla es la siguiente:

CREATE TABLE TAB_IMG (
IDE_IMG VARCHAR(20) NOT NULL,
IDE_INS_USR_SIS VARCHAR(10) NOT NULL,
IDE_UPD_USR_SIS VARCHAR(10),
NUM_REG_CLI VARCHAR(15),
NUM_REG_PROS VARCHAR(15),
IMG_BLOB BLOB SUB_TYPE -1 SEGMENT SIZE 80,
NOM_COM_IDE VARCHAR(70) COLLATE ES_ES,
FEC_NAC_IDE DATE,
IDE_TIP_IMG INTEGER,
EXT_FIL_IMG VARCHAR(10) NOT NULL,
EXT_FIL_COM VARCHAR(10),
);

El Código en el StoredProcedure es el siguiente:

CREATE PROCEDURE SP_INSERT_IMAGE_DIG (
i_ide_ins_usr_sis varchar(10),
i_num_reg_cli varchar(15),
i_img_blob blob sub_type 0 segment size 80,
i_ide_tip_img integer)
as
begin
insert into tab_img(IDE_INS_USR_SIS, NUM_REG_CLI, IMG_BLOB, IDE_TIP_IMG, EXT_FIL_IMG, EXT_FIL_COM, FIL_SZ_ORI, FIL_SZ_COM)
values (:i_ide_ins_usr_sis, :i_num_reg_cli, :i_img_blob, :i_ide_tip_img);
end

En Delphi lo acceso desde un componente llamado IBStroredProc:

with SProc do begin
StoredProcName:= 'SP_INSERT_IMAGE_DIG';
Prepare;
ParambyName('I_IDE_INS_USR_SIS').AsString := 'USR-1-A';
ParambyName('I_NUM_REG_CLI').AsString := 'a';
ParambyName('I_IMG_BLOB').LoadFromFile(inputFile,ftBlob);
ParambyName('I_IDE_TIP_IMG').AsInteger := 1;
ParambyName('I_EXT_FIL_IMG').AsString := 'a';
ParambyName('I_EXT_FIL_COM').AsString := 'a';
ParambyName('I_FIL_SZ_ORI').AsInteger := 1;
ParambyName('I_FIL_SZ_COM').AsInteger := 1;
ExecProc; <----------------------------------------------Exception!
stsMemo.Lines.Add('Enviando el archivo: '+inputFile);
Trans.Commit;
end;
Responder Con Cita
  #2  
Antiguo 08-01-2009
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Intenta hacer un backup de la base y luego un restore con el "Page Size" más grande.
En algún lugar he leido que el tamaño de los blobs depende de esto.
Responder Con Cita
  #3  
Antiguo 08-01-2009
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Aquí está lo leido


Cita:
To BLOB or not to BLOB, that is the question
[...]
Do you need to store very long strings ?
Single VARCHAR column is restricted to 32K bytes (i.e. about 10K Unicode characters).
Maximum blob size is (according to Operation Guide):

1Kb page size => 64 Mb
2Kb page size => 512 Mb
4Kb page size => 4 Gb
8Kb page size => 32 Gb
Responder Con Cita
  #4  
Antiguo 08-01-2009
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Hola, ¿te has fijado que declaras de distinta forma el campo imagen de la tabla y la variable del procedimiento?

Tabla -> IMG_BLOB BLOB SUB_TYPE -1 SEGMENT SIZE 80

Procedimiento ->i_img_blob blob sub_type 0 segment size 80
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #5  
Antiguo 08-01-2009
fredycc fredycc is offline
Miembro
 
Registrado: nov 2008
Posts: 18
Poder: 0
fredycc Va por buen camino
Gracias duilioisola, he verificado the page size de mi base de datos y esta es de: 16384; actualmente tengo otra base de solo 4096, igual en interbase y con una palicación desarrollada en delphi 2005 win32 no tiene problemas con los blobs; pudiera ser que el page size es muy grande?; con respecto al tamaño del blob lo habia leido pero en la declaración del Stored en interbase no hayo ese detalle, y es que es curioso porque precisamente solo me permite enviar archivitos pequeños con los demás llegan pedazos creo yo porque despues no se pueden visualizar o solo basura.

También agradezco el gran apunte de defcon1_es; he corregido la declaracaión pero sigue el mismo problema.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Interbase vs SQL Server jordan23 Conexión con bases de datos 21 06-06-2007 02:17:49
interbase o sql server ??? chelejuan Conexión con bases de datos 3 13-10-2005 20:47:10
Interbase y SQL Server gescoto99 Firebird e Interbase 4 02-02-2005 20:51:59
InterBase 6 i Terminal Server rfernandez Conexión con bases de datos 2 30-01-2004 15:40:48
En SQL server COMPUTE y en INTERBASE? tulio Firebird e Interbase 4 12-05-2003 13:15:58


La franja horaria es GMT +2. Ahora son las 00:02:55.


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
Copyright 1996-2007 Club Delphi