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