Acceso a SQLServer desde Ubuntu

Para acceder a una base de datos SQLServer o Sybase la mejor opción es instalar los drivers TDS (Tabular Data Stream) http://en.wikipedia.org/wiki/Tabular_Data_Stream.

Hay que recordar que SQLServer de Microsoft es una versión propia de la base de datos de Sybase, por lo que comparte algunas de sus características, entre las cuales se encuentra la posibilidad de acceder a ellas mediante el driver TDS de ODBC.

Instalación de paquetes

Instalamos tdsodbc y también sqsh, que es un shell de consultas SQL pensado para sustituir al antiguo isql que se usaba originalmente para hacer querys a las bases de datos de Sybase.

$ sudo apt-get install libsybdb5 freetds-common php5-sybase sqsh unixodbc unixodbc-bin tdsodbc
/etc/init.d/apache2 restart

Ficheros de configuración

/etc/odbcinst.ini

[ODBC Drivers]
     TDS = Installed

[TDS]
     Driver = /usr/lib/odbc/libtdsodbc.so
     Setup = /usr/lib/odbc/libtdsS.so

/etc/odbc.ini

[ODBC Data Sources]
     SQLSERVER_ODBC = TDS

[SQLSERVER_ODBC]
     Driver = /usr/lib/odbc/libtdsodbc.so
     Description = Test ODBC
     Host = localhost
     ServerType = SQLServer
     FetchBufferSize = 00
     Username = UserHM
     UID = UserHM
     Password = HMuser8520
     Database = HostMonitor
     ServerOptions =
     ConnectOptions =
     Options =
     ReadOnly = no

/etc/freetds/freetds.conf

[global]
     # TDS protocol version
     tds version = 4.2

[SQLSERVER_TDS]
     # Version 8.0 para SQL Server 2000
     # Version 7.0 para SQL Server 7
     # Version 6.0 para SQL Server 6
     host = 194.179.23.1
     port = 1433
     tds version = 8.0

Prueba de conectividad TDS

$ sqsh -S 194.179.23.1 -U usuario -P password -D database
sqsh-2.1 Copyright (C) 1995-2001 Scott C. Gray
This is free software with ABSOLUTELY NO WARRANTY
For more information type 'warranty'
1>

Prueba de conectividad ODBC

$ isql -v SQLSERVER_ODBC usuario password
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

Acceso desde PHP

$sock=mssql_connect("SQLSERVER_TDS","usuario","password");
mssql_select_db("database",$sock);
$SQL = "select * from tabla";
$result= mssql_query($SQL);
while ($row = mssql_fetch_array($result)) {
        echo $row['id_tabla'] . " " . $row['campo1'] . " " . $row['campo2'] . "n";
}

Ejecutar un Jquery como comando externo desde un archivo .bat

En ocasiones tenemos que realizar algún proceso en SQL Server en algún sistema Windows. Así que les dejo este POST de como ejecutar un query como comando externo desde un archivo .bat dejando el resultado del mismo en archivo de texto o csv.
Primero generamos nuestro Store procedure en nuestra Base de datos con el comando:
USE database_name;

GO

CREATE PROCEDURE sp_name

AS

SELECT FirstName, LastName FROM Person.Person;

GO

Creamos el archivo sp.txt en la ruta D:Batch (o la que definamos) el cual debe contener la siguiente linea

EXECUTE sp_name
Ahora creamos un archivo .bat usando el bloc de notas al cual le incluiremos el siguiente comando:

sqlcmd -U usuario -P password -S server_name -d database_name -i D:Batchsp.txt -o D:Batchsalida.txt

Por ultimo modificamos las variables usuario, password. server_name y database_name. Probamos nuestro archivo.bat y revisamos el archivo de salida D:Batchsalida.txt