Instalar soporte unixODBC - Sybase - MSSQL en RHEL 4

E-mail Imprimir PDF
Usar puntuación: / 2
MaloBueno 

Es todo un calvario para mi administrar servidores propietarios. Sobre todo cuando estoy acostumbrado al maravilloso "aptitude" en distribuciones @debian. Y los servidores RHEL que administro no tenían soporte yum hasta ahora.

En este post describo como instalar el soporte unixODBC con drivers FreeTDS para acceso a Sybase y MSSQL.

 

Una vez instalado yum es recomendable actualizar el servidor.

 

# yum update


Descargo los paquetes unixODBC. No estan dentro de los repositorios DAG.

$ wget ftp://ftp.pbone.net/mirror/ftp.centos.org/4.8/os/i386/CentOS/RPMS/unixODBC-2.2.11-1.RHEL4.1.i386.rpm
$ wget ftp://ftp.pbone.net/mirror/ftp.centos.org/4.8/os/i386/CentOS/RPMS/unixODBC-devel-2.2.11-1.RHEL4.1.i386.rpm


El archivo unixODBC-devel-2.2.11-1.RHEL4.1.i386.rpm tiene los .h que necesito para el desarrollo en gcc que estoy realizando.

Descargo el cliente "sqsh" para realizar pruebas

$ wget ftp://ftp-linux.cc.gatech.edu/pub/linux/ALPHA/freetds/misc/sqsh-2.1-1.i386.rpm


Los instalo:

# rpm -ivh unixODBC-2.2.11-1.RHEL4.1.i386.rpm
# rpm -ivh unixODBC-devel-2.2.11-1.RHEL4.1.i386.rpm
# rpm -ivh sqsh-2.1-1.i386.rpm


Instalo desde yum el driver freetds:

# yum install freetds.i386


Configuro el driver freeTDS:
# nano /etc/freetds.conf


[TDS]
 host = ip_del_servidor
 port = 1433
 tds version = 8.0


El "tds version" dependen de la versión de Sybase o MSSQL.

Configuramos los drivers:

# nano /etc/odbcinst.ini


[MSSQLServer]
Description     = Driver para MS SQL Server
Driver          = /usr/lib/libtdsodbc.so.0
Driver64        =
Setup           = /usr/lib/libtdsS.so.1
Setup64         =
UsageCount      = 1
CPTimeout       =
CPReuse         =


Configuramos la entrada ODBC:

# nano /etc/odbc.ini


[prueba]
Description     = MSSQLServer
Driver          = MSSQLServer
Servername      = TDS
Database        = base_de_datos
UID             = usuario
PWD             = clave
Port            = 1433
ReadOnly = no


Ahora probamos:

Se puede acceder directamente a la base de datos con el cliente "sqsh"
con la siguiente sintaxis:

$ sqsh -S 192.168.24.58 -U usuario -P clave -D base_de_datos


Para probar la conexión ODBC se debe usar el cliente "isql" con la
siguiente sintaxis:

$ isql -v prueba usuario clave


Adicionalmente este script en php sirve para realizar pruebas, claro tienes que tener el soporte php5-sybase, php5-mssql y php5-odbc:

# nano /var/www/odbc.php


<?php
// Ejemplo de conexión directa
$sock=mssql_connect("ip_del_servidor","usuario","clave");
mssql_select_db("cob_atm",$sock);
$SQL = "select * from dbo.tm_errores_atm;";
$result= mssql_query($SQL);
echo "<h1>Ejemplo de conexion directa</h1><br>";
while ($row = mssql_fetch_array($result)) {
echo $row['ea_numero'] . " " . $row['ea_NextState'] . " " . $row['ea_msg_1'] . "<br>";
}

// Ejemplo de conexión via odbc

$data_source='prueba';
$user='usuario';
$password='clave';

$conn=odbc_connect($data_source,$user,$password);

$result = odbc_tables($conn);

$tables = array();
while (odbc_fetch_row($result))
array_push($tables, odbc_result($result, "TABLE_NAME") );
echo "<h1>Ejemplo de conexion via ODBC</h1><br>";

echo "<center> <table border = 1>";
echo "<tr><th>Table Count</th><th>Table Name</th></tr>";
foreach( $tables as $tablename ) {
$tablecount = $tablecount+1;
echo "<tr><td>$tablecount</td><td>$tablename</td></tr>";
}

echo "</table></center>";
odbc_close($conn);
?>

Comentarios (0)
¡Sólo los usuarios registrados pueden escribir comentarios!