Microsoft ODBC driver 13 para CentOS 7



Vamos a instalar el nuevo driver ODBC de Microsoft en un CentOS 7, pieza indispensable para futuro lanzamiento de su driver específico para Linux.



yum info glibc
yum info e2fsprogs
yum info krb5-libs
yum info openssl
Para evitar errores del tipo Error: configure: error: no acceptable C compiler found in $PATH, y sobre todo en sistemas nuevos, debemos instalar un compilador para c
yum groupinstall "Development tools"

Instalando unixODBC Driver Manager para Microsoft ODBC Driver 13 (Preview) para SQL Server

Ahora necesitamos instalar el driver manager sobre el que basa la conexión el ODBC de Microsoft. La opción más sencilla es utilizar el script de instalación que viene por defecto.
Importante: la versión soportada es la que distribuye Microsoft, debéis desinstalar versiones ya existentes, da igual que sea la misma.
/bin/bash build_dm.sh
Si todo ha ido bien este será el resultado
Verifying processor and operating system ................................... OK
Verifying wget is installed ................................................ OK
Verifying tar is installed ................................................. OK
Verifying make is installed ................................................ OK
Downloading unixODBC 2.3.1 DriverManager ................................... OK
Unpacking unixODBC 2.3.1 DriverManager ..................................... OK
Configuring unixODBC 2.3.1 DriverManager ................................... OK
Building unixODBC 2.3.1 DriverManager ...................................... OK
Build of the unixODBC 2.3.1 DriverManager complete.
Run the command 'cd /tmp/unixODBC.21546.18312.16067/unixODBC-2.3.1; make install' to install the driver manager.

Instalando Microsoft® ODBC Driver 13 (Preview)

cd /tmp/msodbcsql-13.0.0.0
/bin/bash install.sh verify
Checking for 64 bit Linux compatible OS ..................................... OK
Checking required libs are installed ........................................ OK
unixODBC utilities (odbc_config and odbcinst) installed ..................... OK
unixODBC Driver Manager version 2.3.1 installed ............................. OK
unixODBC Driver Manager configuration correct .............................. OK*
Microsoft ODBC Driver 13 for SQL Server already installed ............ NOT FOUND
/bin/bash install.sh install
Checking for 64 bit Linux compatible OS ..................................... OK
Checking required libs are installed ........................................ OK
unixODBC utilities (odbc_config and odbcinst) installed ..................... OK
unixODBC Driver Manager version 2.3.1 installed ............................. OK
unixODBC Driver Manager configuration correct .............................. OK*
Microsoft ODBC Driver 13 for SQL Server already installed ............ NOT FOUND
Microsoft ODBC Driver 13 for SQL Server files copied ........................ OK
Symbolic links for bcp and sqlcmd created ................................... OK
Microsoft ODBC Driver 13 for SQL Server registered ................... INSTALLED
Ahora comprobamos que la ubicación de la biblioteca del controlador ODBC es parte de la ruta ld:
  • Modificar /etc/ld.so.conf
  • Si no está ya presente, añadir / usr / lib64 a la última línea del archivo
  • Ejecutar ldconfig para forzar al archivo que vuelva a cargar la configuración

Instalamos el controlador propiamente dicho en las conexiones ODBC

odbcinst -q -d -n "ODBC Driver 13 for SQL Server"
[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0
Threading=1
UsageCount=1
Y finalmente agregamos la conexión a nuestro servidor editando el archivo /etc/odbc.ini
[DSNName]
Driver=ODBC Driver 13 for SQL Server
Description=My Sample ODBC Database Connection
Trace=Yes
Server=[server address]
Port=1433
Database=[database name]
Comprobamos que se conecta
isql -v <DSN Name> <sql server authentication user name> <password>

Configurando PHP 7

debemos instalar php-pdo y php-odbc para utilizar este controlador ODBC. El paquete php-odbc necesita como dependencia libodbc.so.2 de unixODBC seguramente nos dirá que lo instalemos nuevamente, aqui hay dos opciones
  1. instalarlo –> yo lo hice y no me ha dado ningún conflicto con el que instala microsoft
  2. omitir el paquete y descargar php-odbc como rpm, lo malo de esto es que cada vez que queramos actualizar php tendremos el mismo problema de dependencias.
Para omitir el paquete unixODBC podemos excluirlo del repositorio /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
…
exclude=unixODBC
Descargamos el RPM con yumdownloader php-odbc y lo instalamos rpm -Uvh php-odbc-7.0.2-1.el7.remi.x86_64.rpm –nodeps.
Probando la conexión con PHP
Utilizando el nombre del DSN
$sqlsrv = new PDO(“odbc:<dsnname>", <user>, <password>);
Manualmente
$sqlsrv = new PDO(“odbc:DRIVER={ODBC Driver 13 for SQL Server};SERVER=<server>;DATABASE=<db>, <user>, <password>);
Aunque se puede especificar el charset de la conexión por ahora todos los datos me los devuelve cómo UTF-8, no he logrado conseguir que devuelva ISO-8859-1.

Comentarios