SQL Server vía ODBC en Debian Etch

04/02/2009
By

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.

Tags: , , , ,

5 Responses to SQL Server vía ODBC en Debian Etch

  1. SQL Server vía ODBC en Debian Etch - DbRunas on %d 06UTC %B 06UTC %Y at %H:%M 03Fri, 06 Feb 2009 03:44:25 +000025.
  2. Fabricio on %d 25UTC %B 25UTC %Y at %H:%M 03Sat, 25 Apr 2009 15:19:33 +000033.
    Usando Internet Explorer Internet Explorer 7.0 en Windows Windows XP

    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!!

  3. bombadil on %d 19UTC %B 19UTC %Y at %H:%M 09Tue, 19 May 2009 09:24:48 +000048.
    Usando Konqueror Konqueror 4.2 en Linux Linux

    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.

  4. Nelson on %d 12UTC %B 12UTC %Y at %H:%M 06Wed, 12 Aug 2009 18:27:55 +000055.
    Usando Mozilla Firefox Mozilla Firefox 3.0.13 en Windows Windows XP

    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 on %d 13UTC %B 13UTC %Y at %H:%M 12Thu, 13 Aug 2009 00:11:45 +000045.
      Usando Safari Safari 531.9 en Mac OS X Mac OS X 10.4.11

      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.

Deja un comentario

Tu dirección de correo electrónico no será publicada.