Página 1 de 1

Limitación de 255 caracteres en el módulo de DBI

NotaPublicado: 2019-11-25 07:02 @335
por Txipo
Buenos días.

Espero que sea este el sitio para comenzar este hilo... Si no es así presento mis disculpas de antemano. :wink:

De primeras avisar que soy nuevo en la programación Perl y que quizás me cuele en la terminología que se usa... pero básicamente, me gustaría saber si es posible aumentar el número de caracteres que se recuperan al atacar a una BD de SQL Server desde nuestros scripts de Perl, usando el módulo de DBI.

La conexión la realizo de la siguiente manera:
$db_conex = DBI->connect("DBI:Sybase:xxxx:server=".$srv,$user,$pass,) or print LOG "No puedo conectar con el servidor xxx\n";

Sentencia:
$qry="SELECT campo1,campo2,campo3
FROM xxx..nombre_tabla;

Prepare:
my $st=$db_conex ->prepare($qry) or print LOG "Ha fallado el prepare de la query de recogida\n";

Ejecucion:
$st->execute();

Me está recuperando la información correctamente si el rango de caracteres de los campos es corto, el problema comienza cuando el contenido del campo es de un rango superior a 255 caracteres.

¿Es este rango configurable en el módulo DBI?

Un saludo a todos y gracias de antemano por vuestra ayuda.

Re: Limitación de 258 caracteres en el módulo de DBI

NotaPublicado: 2019-11-25 08:10 @382
por explorer
Bienvenido a los foros de Perl en Español, Txipo.

Cambia

DBI->connect('dbi:Sybase:host=127.0.0.1;port=1433')

por

DBI->connect('dbi:Sybase:server=MSSQL')

teniendo en el archivo ~/etc/freetds.conf esto:

[MSSQL]
host = 127.0.0.1
port = 1433
tds version = 8.0

(Información que he sacado desde aquí. Lo más seguro es que después de 13 años haya más información. Si estás usando el cliente de TDS debes asegurarte que es una versión 7.0 o superior).

Re: Limitación de 258 caracteres en el módulo de DBI

NotaPublicado: 2019-11-25 10:03 @460
por Txipo
¡¡¡Muchísimas gracias, explorer!!!

Me está extrayendo toda la información del campo. :D :D :D :D :D

Por curiosidad, ¿sabrías explicarme qué es lo que estoy realizando con estos cambios?

¿Cuál es la diferencia entre tirar del archivo de configuración o llamar a la BD directamente desde el conector?

Si he preguntado alguna barbaridad mil disculpas que hablo desde la absoluta ignorancia. :oops:

Re: Limitación de 258 caracteres en el módulo de DBI

NotaPublicado: 2019-11-25 13:33 @606
por explorer
Pues... yo tampoco estoy tan seguro... por lo que he leído en esas dos páginas, se trata de un problema de versiones de la biblioteca TDS, o sea, que hay un bug en las versiones viejas. Así que supongo que le estamos diciendo a Sybase que acceda con una versión de protocolo más moderna.

Re: Limitación de 258 caracteres en el módulo de DBI

NotaPublicado: 2019-11-26 02:36 @150
por Txipo
¡Muchísimas gracias, explorer, por todo! Sí por la rapidez con la que me has contestado y la solvencia de tus respuestas.

Porque es la primera vez que me ayudas directamente, pero me has ayudado mucho indirectamente en mi inicio en el mundo del Perl.

Con gente como tu es fácil trabajar. :D :D :D