SQL Server vía ODBC en Debian Etch

Casi a punto de asistir a la liberación de lenny (la versión 5.0 de Debian), seguimos viendo que con etch, aún, tenemos lo suficiente para tirar perfectamente, y sin agregar paquetes de backport.

En este caso, voy a explicar como instalar y usar SQL Server vía ODBC desde cualquier aplicación en GNU/Linux, como pueden ser programas Java, Perl, PHP, Ruby…

En principio, vamos a tirar de apt-get para instalar algunos programas:

apt-get install tdsodbc unixodbc libct3 libltdl3 odbcinst1debian1

Lo siguiente es crear el fichero /etc/odbcinst.ini, que debe de contener lo siguiente:

[FreeTDS]
Description     = TDS driver (Sybase/MS SQL)
Driver          = /usr/lib/odbc/libtdsodbc.so
Setup           = /usr/lib/odbc/libtdsS.so
CPTimeout       =
CPReuse         =

Ahora, para cada base de datos a la que queramos conectarnos, habrá que agregar un bloque de este tipo en el fichero /etc/odbc.ini:

[contactos]
Driver      = FreeTDS
Server      = 192.168.1.5
Database    = contactos
TDS_Version = 8.0
Port        = 1433

El nombre de la conexión es el que se situa entre los corchetes, y el que se usará para referenciar a esa conexión.

Para comprobar, podemos ejecutar el comando isql con los siguientes parámetros:

isql contactos usuario clave

Con esto, desde interfaces como DBI (Perl y Ruby), podemos usar DSN del tipo DBI:ODBC:contactos para acceder a esta conexión, siempre pensando que el usuario y la clave debe de insertarse en el comando de conexión.

Entradas relacionadas:

  1. ¡Debian Lenny 5.0 ya es estable!

3 Comments

  1. Fabricio
    Posted 25 abril 2009 at 15:19 | Permalink

    donde y como debe estar el archivo de la base, a mi no se me conecto…me dio error Could not SQLConnect. tengo la configuracion identica a tu ejemplo…por favor me das una mano? mil gracias!!

  2. Posted 19 mayo 2009 at 09:24 | Permalink

    La conexión depende mucho de la versiónde TDS que se ponga. Yo voy alternando entre 8.0 y 7.0, ya que uso SQL Server 2000, 2005 y 2008… también tienes que tener todo perfectamente instalado y asegurarte de que has escrito correctamente cada caracter de los datos sensibles (Server, Driver, Database…) por último, asegúrate de que los datos de usuario también son correctos y mira el log de SQL Server para ver si le ha llegado petición de conexión, al menos.

  3. Nelson
    Posted 12 agosto 2009 at 18:27 | Permalink

    Hola! muchas gracias por el tuto…
    Tengo una sola consulta… se puede dar la instancia que una consulta genere menos informacion (datos) que la misma consulta ejecutada con el analizador SQL de Win32?
    En mi caso… una consulta genera desde Linux por freetds genero 8 rows y por SQL analizador win32 15.
    Muchas gracias!

    bombadil

    bombadil Respuesta:

    Hola,

    sí que se puede dar el caso. SQL Server tiene el mal de los errores just-in-time, es decir, que si has hecho una comparación del tipo:

    SELECT * FROM datos WHERE telefono = 999111222;

    Te encontrarás con que, si el tipo de dato “teléfono” es “varchar” y tiene algún campo con un carácter alfanumérico, en ese momento es cuando da un error y deja de mostrar información. Hay forma de rescatar los errores desde el servidor una vez acabada la consulta… pero no recuerdo como era… lo buscaré y ampliaré el manual.

    Gracias por el apunte.