lunes, 25 de febrero de 2013

Linux (Centos)+ Apache + Php + MSSQLSERVER With ODBC Parte 1

Hola queridos amigos,

 Antes que nada déjenme decirles que soy un novato en toda la plataforma Linux, PHP, Mysql y open source en general  sin embargo he tenido el atrevimiento de colocar este post para ayudar a otras personas que no tengan la misma dificultad que yo, para ello les comentare que en estos momentos me han solicitado realizar un pequeño proyecto en donde me solicitan crear algunos aplicativos en PHP sobre Linux y que consulten bases de datos MSSQLServer esto para mi es algo nuevo por lo que investigue y pude realizar dicha conexión. Ahora, hay que aclarar que para realizar ello yo tome en cuenta 2 opciones.

  Opción 1
  Re compilar el PHP con soporte a MSSQLSERVER

 Opción 2
 Utilizar drive ODBC

Para ambos casos logre completar dicha tarea, sin embargo en este post explicaré como realizar dicha conexión con ODBC.

En primer lugar hay que verificar que nuestro servidor de base de datos en este caso MSSQLSERVER este visible en nuestra red para verificar ello lo podemos hacer con un comando telnet en la consola de Linux con el siguiente comando

# telnet 192.168.1.254 1433

Connected to 172.16.8.5 (172.16.8.5).
Escape character is '^]'.

 Si la respuesta fue como la mostrada entonces el servidor de base de datos esta trabajando correctamente y podemos acceder a el. a continuación detallare los pasos que seguí para realizar la configuración.


Ingresamos al directorio donde suelo colocar los archivos que descargo
# cd /usr/src/

Procedemos a descargar freetds o en el link http://freetds.schemamania.org/
#wget ftp://ftp.astron.com/pub/freetds/stable/freetds-stable.tgz


Descomprimos el freetds
#tar -zxvf freetds-stable.tgz

Ingresamos al directorio que hemos generado
#cd freetds-0.91


Configuramos el tds
./configure --with-tdsver=7.0




Compilamos
#make


Instalamos compilados
#make install

A continuación probamos conexión.
#/usr/local/bin/tsql -S 192.168.1.254 -U sa

En seguida ingresamos el password del usuario sa y mostrará el siguiente resultado.

Password:
locale is "es_ES.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>

Salimos del prompt anterior con quit.

1> quit

Verificamos si tenemos paquetes necesarios.

#yum list freetds*

Available Packages
freetds.i386                             0.64-11.el5.centos     extras
freetds-devel.i386                       0.64-11.el5.centos     extras
freetds-doc.i386                         0.64-11.el5.centos     extras

#yum list unixodbc*

unixODBC.i386                            2.2.11-7.1             installed
Available Packages
unixODBC.i386                            2.2.11-10.el5          base
unixODBC-devel.i386                      2.2.11-10.el5          base
unixODBC-kde.i386                        2.2.11-10.el5          base
unixODBC-libs.i386                       2.2.11-10.el5          base
unixODBC64.i386                          2.2.14-3.el5           base
unixODBC64-devel.i386                    2.2.14-3.el5           base
unixODBC64-libs.i386                     2.2.14-3.el5           base

Instalamos paquetes necesarios
yum install freetds.i386
yum install freetds-devel.i386

yum install unixODBC.i386
yum install unixODBC-devel.i386

Ingresamos al archivo /etc/odbc.ini

y agregamos el siguiente contexto
[odbc-test]
Driver = ms-sql
Description = test
Server = 192.168.1.254
Port = 1433
User = sa
Password = mipassword
Database = Northwind

Ingresamos al archivo /etc/odbcinst.ini

y agregamos el siguiente contexto
[ms-sql]
Description = TDS connection
Driver = /usr/lib/libtdsodbc.so
Setup = /usr/lib/libtdsS.so
FileUsage = 1
UsageCount = 1






Ingresamos al archivo /etc/freetds.conf

y agregamos el siguiente contexto
[ms-sql]
host = 192.168.1.254
port = 1433
tds version = 7.0

en el prompt de la linea de comandos probamos la conexión

# isql -v odbc-test sa mipassword

y nos arrojara el siguiente resultado

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

probamos query
SQL> select * from Customers

y nos mostrara el resultado del SELECT.

Bueno amigos hasta alli he llegado.

Continuare realizando la conexión con PHP y MSSQLSERVER en un siguiente post

Saludos.

Juan Cucho

Links references:



1 comentario:

  1. La información esta buena, pero esta declaración "para ayudar a otras personas que no tengan la misma dificultad que yo" no concuerda con la intención del post.

    ResponderEliminar