Instalar soporte unixODBC - Sybase

Transcripción

Instalar soporte unixODBC - Sybase
Instalar soporte unixODBC - Sybase - MSSQL en RHEL 4
Martes, 04 de Mayo de 2010 16:29 - Actualizado Martes, 04 de Mayo de 2010 18:03
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.
{codecitation width="500px"}
# yum update
{/codecitation}
Descargo los paquetes unixODBC. No estan dentro de los repositorios DAG.
{codecitation width="700px"}
$ 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.R
HEL4.1.i386.rpm
{/codecitation}
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
{codecitation width="700px"}
$ wget ftp://ftp-linux.cc.gatech.edu/pub/linux/ALPHA/freetds/misc/sqsh-2.1-1.i386.rpm
{/codecitation}
1/4
Instalar soporte unixODBC - Sybase - MSSQL en RHEL 4
Martes, 04 de Mayo de 2010 16:29 - Actualizado Martes, 04 de Mayo de 2010 18:03
Los instalo:
{codecitation width="500px"}
# 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
{/codecitation}
Instalo desde yum el driver freetds:
{codecitation width="500px"}
# yum install freetds.i386
{/codecitation}
Configuro el driver freeTDS:
{codecitation width="500px"}
# nano /etc/freetds.conf
{/codecitation}
{codecitation width="500px"}
[TDS]
host = ip_del_servidor
port = 1433
tds version = 8.0
{/codecitation}
El "tds version" dependen de la versión de Sybase o MSSQL.
Configuramos los drivers:
{codecitation width="500px"}
# nano /etc/odbcinst.ini
{/codecitation}
{codecitation width="500px"}
[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 =
{/codecitation}
2/4
Instalar soporte unixODBC - Sybase - MSSQL en RHEL 4
Martes, 04 de Mayo de 2010 16:29 - Actualizado Martes, 04 de Mayo de 2010 18:03
Configuramos la entrada ODBC:
{codecitation width="500px"}
# nano /etc/odbc.ini
{/codecitation}
{codecitation width="500px"}
[prueba]
Description = MSSQLServer
Driver = MSSQLServer
Servername = TDS
Database = base_de_datos
UID = usuario
PWD = clave
Port = 1433
ReadOnly = no
{/codecitation}
Ahora probamos:
Se puede acceder directamente a la base de datos con el cliente "sqsh"
con la siguiente sintaxis:
{codecitation width="500px"}
$ sqsh -S 192.168.24.58 -U usuario -P clave -D base_de_datos
{/codecitation}
Para probar la conexión ODBC se debe usar el cliente "isql" con la
siguiente sintaxis:
{codecitation width="500px"}
$ isql -v prueba usuario clave
{/codecitation}
Adicionalmente este script en php sirve para realizar pruebas, claro tienes que tener el soporte
php5-sybase, php5-mssql y php5-odbc:
{codecitation width="500px"}
# nano /var/www/odbc.php
{/codecitation}
{codecitation width="500px"}
<?php
// Ejemplo de conexión directa
$sock=mssql_connect("ip_del_servidor","usuario","clave");
mssql_select_db("cob_atm",$sock);
3/4
Instalar soporte unixODBC - Sybase - MSSQL en RHEL 4
Martes, 04 de Mayo de 2010 16:29 - Actualizado Martes, 04 de Mayo de 2010 18:03
$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);
?>
{/codecitation}
4/4

Documentos relacionados