Instalación FreeTDS + Perl DBI + Perl DBD Sybase Centos 64 bits | Setup FreTDS + Perl DBI + Perl DBD::Sybase over CentOS 64bits for SQLSERVER Integration
12 Feb
Instalando Freetds con perl DBD::sybase para realizar conexiones a SQL SERVER desde Perl, me encontré con un problema al realizar la instalación de los paquetes en CentOS 64bits, problemas de librerías, paquetes, rpm’s entre otros. La única forma en que pude resolverlos fue la siguiente.
Paquetes Necesarios
http://www.freetds.org/
http://www.cpan.org
Procedimiento
Para realizar la instalación de los paquetes debemos descargar el Freetds del Website en su versión estable con el comando wget como se muestra a continuación
wget url de descarga
Una vez descargado el paquete procedemos a compilarlo de la siguiente forma:
./configure --prefix=/usr/local/freetds --with-tdsver=7.0 make make install
Una vez echo esto tendremos el driver de freetds instalado, ahora debemos configurarlo y probar que funciona. Para esto es necesario editar el fichero /usr/local/freetds/etc/freetds.conf Agregando el siguiente contenido.
try server login = yes try domain login = no [sql1] host = ip_del_servidor_SQLSERVER port = 1433 tds version = 8.0
Guardamos los cambios y ejecutamos el siguiente comando para asegurarnos que Freetds funciona.
/usr/local/freetds/bin/tsql -S ip_del_servidor_SQLSERVER -U sqluser
Una vez comprobada la conexión es necesario instalar las librerías de Perl que nos permitirán crear los Scripts de conexión a SQL SERVER. Para ello necesitaremos instalar Perl::DBI y Perl::DBD::Sybase, que no debería tener problemas en instalarse por yum, cpan o compilado por fuentes, a excepción de los sistemas 64 bits donde instalaremos Perl::DBI por cualquier gestor de paquetes mientras que Perl::DBD::Sybase los instalaremos por fuentes.
Para ello descargaremos Perl::DBD::Sybase del siguiente Url: http://search.cpan.org/CPAN/authors/id/M/ME/MEWP/DBD-Sybase-1.09.tar.gz, y luego lo instalaremos de la siguiente forma:
export SYBASE=/usr/local/freetds tar -zxvf DBD-Sybase-1.09.tar.gz cd DBD-Sybase-1.09
Ahora editamos el fichero dbdimp.c y agregamos las siguientes lineas antes de la funcion syb_init()
#undef CS_VERSION_150 #undef CS_VERSION_125 #undef CS_VERSION_120 #undef CS_DATE_TYPE #undef CS_BIGINT_TYPE
Y luego procedemos a compilar la libreria normalmente
perl Makefile.PL make make install
Una vez realizado esto podremos probar con un script simple de Perl como el siguiente que todo funcione.
#!/usr/bin/perl
use DBI;
$dsn = 'DBI:Sybase:server=cambiar_ip_servidor';
my $dbh = DBI->connect($dsn, "usuario_SQLSERVER", 'contrasena_SQLSERVER');
die "unable to connect to server $DBI::errstr" unless $dbh;
$dbh->do("use Nombre_tabla");
$query = "SELECT * FROM TABLA_A_CONSULTAR";
$sth = $dbh->prepare ($query) or die "prepare failed\n";
$sth->execute( ) or die "unable to execute query $query error $DBI::errstr";
$rows = $sth->rows ;
print "$row rows returned by query\n";
while ( @first = $sth->fetchrow_array ) {
foreach $field (@first) {
print "campo: $field\n";
}
}Vía: ibiblio.org PerlMonks
