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)
-   -   Interbase server crash! (https://www.clubdelphi.com/foros/showthread.php?t=62677)

fredycc 07-01-2009 21:21:39

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;

duilioisola 08-01-2009 10:30:06

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.

duilioisola 08-01-2009 10:32:31

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

defcon1_es 08-01-2009 13:21:59

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

fredycc 08-01-2009 15:22:31

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.:confused:


La franja horaria es GMT +2. Ahora son las 05:40:28.

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