¿Entonces como haremos para usar MSSQL en Linux? Lo primero necesitamos tener un servidor con Windows con el MSSQL instalado, funcionando y con el acceso remoto activado. Luego, haremos que Linux se conecte a esa base de datos. Decia que no es tan trivial porque no es instalar un paquete con yum o con apt (puede que esté, no lo he buscado), pero lo que nunca te va a fallar (o si, nunca se sabe) es compilandolo de cero. El programa en cuestion es el freetds. Antes de bajarlo y compilarlo, necesitaremos saber qué versión a que version de MSSQL vamos a conectarnos además de apuntar la URL (o IP), el puerto y el nombre de la bbdd, ademas del usuario y contraseña, ya que lo necesitaremos pronto.
Empecemos, lo primero es descargarnos los paquetes para compilarlos, trabajaremosndesde la carpeta /opt. Tendremos que instalar primero el paquete unixODBC mediante repositorios.
# cd /optHay que tener en cuenta y especial cuidado esta linea en el configure "--with-tdsver=7.2", ya que hay que indicar la versión de MSSQL que se usa*. Con esto ya tendremos instalado el freetds en /usr/local/freetds. Ahora toca configurarlo. Hay que añadir al archivo /usr/local/freetds/etc/freetds.conf el servidor de la base de datos a la que se quiere conectar. Ahora es cuando necesitamos los datos del otro servidor, hay que añadir unas lineas de este estilo:
# wget http://www.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-0.91.tar.gz
# tar xzvf freetds-0.91.tar.gz
# cd freetds-0.91
# ./configure --with-tdsver=7.2 --prefix=/usr/local/freetds
# make
# make install
[MSSQLSERVER]En "host" pondremos el nombre FQDN del servidor o la IP, en "port" el puerto que tenga el servidor y el "tds version" la versión del MSSQL según la tabla que teneis en el enlace al final (*).
host = server.domain.com
port = 1433
tds version = 7.2
Con esto, ya deberíamos tenerlo todo listo para conectarnos, así que vamos a probarlo. Usaremos un programa que nos viene en el freetds llamado "tsql". En mi caso, está en la carpeta /usr/local/freetds/bin/, pero con un "locate tsql" puedes confirmar dónde está. Usaremos el servidor que he declarado antes para hacer el ejemplo, recuerda que tienes que cambiar los datos.
# /usr/local/freetds/bin/tsql -S MSSQLSERVER -U prueba -P p1r2u3e4b5a6Donde "MSSQL" es el servidor que hemos declarado antes, "prueba" es el usuario de la base de datos y "p1r2u3e4b5a6" es la contraseña. Esta última no es necesario ponerla en la llamada, ya que nos la pide por promt (más seguro, no se queda guardada en el history). Si todo va bien, nos mostrará unos datos y nos mostrará "1>". A partir de ahora podemos hacer lo que necesitemos en el MSSQL, por ejemplo:
1>SELECT * FROM TABLAEso nos debería mostrar el contenido de "TABLA".
2>GO
¿Hemos acabado? Depende, esto así no tiene mucha utilidad. Lo siguiente que haremos será que el PHP pueda usar el MSSQL. Ahora toca recompilar el php, cuando hagamos el ./configure tenemos que añadirle --with-sybase=/usr/local/freetds.**
Si tenemos instalado DirectAdmin ya sabemos que hay que hacer todo usando sus scripts. Tenemos que editar el archivo /usr/local/directadmin/custombuild/configure/ap2/configure.php5 *** y añadir "--with mssql=/usr/local/freetds", añadiendo "\" a la linea anterior. Luego vamos a "/usr/local/directadmin/custombuild" y ejecutamos:
# ./build cleanEso nos recompilará el php de nuevo. Ya deberíamos tenerlo todo configurado para usar una base de datos en MSSQL en nuestro servidor Linux. Si se necesita más información, hay que consultar la web de freetds.
# ./build update
# ./build php n
Como esto es una cosa que estamos haciendo en el trabajo entre varios, si surge algún cambio a la hora de hacer las pruebas, actualizaré el post con la nueva configuración, pero esto por ahora nos está funcionando.
¡Hasta la próxima!
* Consultarlo aqui: http://www.freetds.org/userguide/choosingtdsprotocol.htm
** Más info: http://www.freetds.org/userguide/php.htm
*** Usando apache2 y php5, si no, consultar en internet dónde estan los archivos de configuración.