Instalación de Microsoft ODBC Driver for SQL Server (Linux)

En este artículo se explica cómo instalar Microsoft ODBC Driver for SQL Server en Linux. También se incluyen instrucciones para las herramientas de línea de comandos opcionales para SQL Server (bcp y sqlcmd), y los encabezados de desarrollo de unixODBC.

En este artículo se proporcionan comandos para instalar el controlador ODBC desde el shell de Bash. Si quiere descargar directamente los paquetes, vea Descarga del controlador ODBC para SQL Server.

Microsoft ODBC 18

En las secciones siguientes se explica cómo instalar Microsoft ODBC Driver 18 desde el shell de Bash para diferentes distribuciones de Linux. Las distribuciones admitidas son Alpine Linux, Debian, Red Hat Enterprise Linux (RHEL), Oracle Linux, SUSE Linux Enterprise Server (SLES) y Ubuntu.

case $(uname -m) in
    x86_64)   architecture="amd64" ;;
    arm64)   architecture="arm64" ;;
    *) architecture="unsupported" ;;
esac
if [[ "unsupported" == "$architecture" ]];
then
    echo "Alpine architecture $(uname -m) is not currently supported.";
    exit;
fi

#Download the desired package(s)
curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$architecture.apk
curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/mssql-tools18_18.3.1.1-1_$architecture.apk

#(Optional) Verify signature, if 'gpg' is missing install it using 'apk add gnupg':
curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$architecture.sig
curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/mssql-tools18_18.3.1.1-1_$architecture.sig

curl https://packages.microsoft.com/keys/microsoft.asc  | gpg --import -
gpg --verify msodbcsql18_18.3.3.1-1_$architecture.sig msodbcsql18_18.3.3.1-1_$architecture.apk
gpg --verify mssql-tools18_18.3.1.1-1_$architecture.sig mssql-tools18_18.3.1.1-1_$architecture.apk

#Install the package(s)
sudo apk add --allow-untrusted msodbcsql18_18.3.3.1-1_$architecture.apk
sudo apk add --allow-untrusted mssql-tools18_18.3.1.1-1_$architecture.apk

Nota

Se requiere la versión del controlador 17.5 o posterior para la compatibilidad con Alpine.

Versiones anteriores

En las secciones siguientes se proporcionan instrucciones para instalar versiones anteriores de Microsoft ODBC Driver en Linux. Se describen las siguientes versiones del controlador:

Microsoft ODBC 17

En las secciones siguientes se explica cómo instalar el controlador ODBC 17 de Microsoft desde el shell de Bash para diferentes distribuciones de Linux.

Importante

Si ha instalado el paquete msodbcsql v17 que estaba disponible brevemente, debe quitarlo antes de instalar el paquete msodbcsql17. Esto evitará conflictos. El paquete msodbcsql17 se puede instalar en paralelo con el paquete msodbcsql v13.

#Download the desired package(s)
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.5.1-1_amd64.apk
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.10.1.1-1_amd64.apk

#(Optional) Verify signature, if 'gpg' is missing install it using 'apk add gnupg':
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.5.1-1_amd64.sig
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.10.1.1-1_amd64.sig

curl https://packages.microsoft.com/keys/microsoft.asc  | gpg --import -
gpg --verify msodbcsql17_17.10.5.1-1_amd64.sig msodbcsql17_17.10.5.1-1_amd64.apk
gpg --verify mssql-tools_17.10.1.1-1_amd64.sig mssql-tools_17.10.1.1-1_amd64.apk

#Install the package(s)
sudo apk add --allow-untrusted msodbcsql17_17.10.5.1-1_amd64.apk
sudo apk add --allow-untrusted mssql-tools_17.10.1.1-1_amd64.apk

Nota

Se requiere la versión del controlador 17.5 o posterior para la compatibilidad con Alpine.

ODBC 13.1

En las secciones siguientes se explica cómo instalar Microsoft ODBC Driver 13.1 desde el shell de Bash para diferentes distribuciones de Linux.

curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
curl https://packages.microsoft.com/config/debian/8/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install unixodbc-dev

ODBC 13

En las secciones siguientes se explica cómo instalar Microsoft ODBC Driver 13 desde el shell de Bash para diferentes distribuciones de Linux.

curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
sudo yum update
sudo yum remove unixODBC #to avoid conflicts
sudo ACCEPT_EULA=Y yum install msodbcsql-13.0.1.0-1 mssql-tools-14.0.2.0-1
sudo yum install unixODBC-utf16-devel #this step is optional but recommended*
#Create symlinks for tools
sudo ln -sfn /opt/mssql-tools/bin/sqlcmd-13.0.1.0 /usr/bin/sqlcmd
sudo ln -sfn /opt/mssql-tools/bin/bcp-13.0.1.0 /usr/bin/bcp

Instalación sin conexión

Si necesita que Microsoft ODBC Driver 13 se instale en un equipo sin conexión a Internet, deberá resolver manualmente las dependencias del paquete. La versión 13 del controlador ODBC de Microsoft tiene las siguientes dependencias directas:

  • Ubuntu: libc6 (>= 2.21), libstdc++6 (>= 4.9), libkrb5-3, libcurl3, openssl, debconf (>= 0.5), unixodbc (>= 2.3.1-1)
  • Red Hat: glibc, e2fsprogs, krb5-libs, openssl, unixODBC
  • SUSE: glibc, libuuid1, krb5, openssl, unixODBC

Cada uno de estos paquetes a su vez tiene sus propias dependencias, que pueden o no estar presentes en el sistema. Para una solución general de este problema, consulte la documentación del administrador de paquetes de su distribución: Red Hat, Ubuntu y SUSE.

También es habitual descargar manualmente todos los paquetes dependientes y colocarlos juntos en el equipo de instalación y, luego, instalar manualmente cada paquete individual y finalizar con el paquete Microsoft ODBC Driver 13.

sudo yum install glibc e2fsprogs krb5-libs openssl unixODBC unixODBC-devel #install dependencies
sudo rpm -i  msodbcsql-13.1.X.X-X.x86_64.rpm #install the Driver

ODBC 11

En las secciones siguientes se explica cómo instalar Microsoft ODBC Driver 11 en Linux. Para poder utilizar el controlador, instale el Administrador de controladores unixODBC. Para obtener más información, vea Installing the Driver Manager (Instalación del administrador de controladores).

Pasos de instalación

Importante

En estas instrucciones se hace referencia a msodbcsql-11.0.2270.0.tar.gz, que es el archivo de instalación para Red Hat Linux. Si va a instalar la versión preliminar para SUSE Linux, el nombre de archivo es msodbcsql-11.0.2260.0.tar.gz.

Para instalar el controlador, haga lo siguiente:

  1. Asegúrese de que tiene permisos de raíz.

  2. Cambie al directorio donde la descarga ha colocado el archivo msodbcsql-11.0.2270.0.tar.gz. Asegúrese de que dispone del archivo *.tar.gz que coincida con la versión de Linux. Para extraer los archivos, ejecute el comando siguiente: tar xvzf msodbcsql-11.0.2270.0.tar.gz.

  3. Cambie al directorio msodbcsql-11.0.2270.0; allí verá un archivo llamado install.sh.

  4. Para ver una lista de las opciones de instalación disponibles, ejecute el siguiente comando: ./install.sh.

  5. Realice una copia de seguridad de odbcinst.ini. El programa de instalación del controlador actualiza odbcinst.ini. odbcinst.ini contiene la lista de controladores que están registrados en el Administrador de controladores unixODBC. Para detectar la ubicación de odbcinst.ini en el equipo, ejecute el siguiente comando: odbc_config --odbcinstini.

  6. Antes de instalar el controlador, ejecute el siguiente comando: ./install.sh verify. La salida de ./install.sh verify notifica si el equipo tiene el software necesario para admitir el controlador ODBC en Linux.

  7. Cuando esté preparado para instalar el controlador ODBC en Linux, ejecute el comando ./install.sh install. Si tiene que especificar un comando de instalación (bin-dir o lib-dir), especifíquelo después de la opción install.

  8. Cuando revise el contrato de licencia, escriba YES para continuar con la instalación.

El programa de instalación coloca el controlador en /opt/microsoft/msodbcsql/11.0.2270.0. El controlador y sus archivos auxiliares deben estar en /opt/microsoft/msodbcsql/11.0.2270.0.

Para comprobar que se haya registrado correctamente Microsoft ODBC Driver en Linux, ejecute el siguiente comando: odbcinst -q -d -n "ODBC Driver 11 for SQL Server".

Desinstalación

Puede desinstalar ODBC Driver 11 en Linux ejecutando los siguientes comandos:

  1. rm -f /usr/bin/sqlcmd

  2. rm -f /usr/bin/bcp

  3. rm -rf /opt/microsoft/msodbcsql

  4. odbcinst -u -d -n "ODBC Driver 11 for SQL Server"

Archivos de controlador

El controlador ODBC en Linux consta de los componentes siguientes:

Componente Descripción
libmsodbcsql-17.X.so.X.X o libmsodbcsql-13.X.so.X.X El archivo de biblioteca dinámica del objeto compartido (so) que contiene toda la funcionalidad del controlador. Este archivo se instala en /opt/microsoft/msodbcsql17/lib64/ para el controlador 17 y en /opt/microsoft/msodbcsql/lib64/ para el controlador 13.
msodbcsqlr17.rll o msodbcsqlr13.rll El archivo de recursos asociado de la biblioteca de controladores. Este archivo se instala en [driver .so directory]../share/resources/en_US/.
msodbcsql.h El archivo de encabezado que contiene todas las definiciones nuevas necesarias para utilizar el controlador.

Nota: No se puede hacer referencia a msodbcsql.h y odbcss.h en el mismo programa.

msodbcsql.h se instala en /opt/microsoft/msodbcsql17/include/ para el controlador 17 y en /opt/microsoft/msodbcsql/include/ para el controlador 13.
LICENSE.txt El archivo de texto que contiene los términos del Contrato de licencia del usuario final. Este archivo se coloca en /usr/share/doc/msodbcsql17/ para el controlador 17 y en /usr/share/doc/msodbcsql/ para el controlador 13.
RELEASE_NOTES El archivo de texto que contiene las notas de la versión. Este archivo se coloca en /usr/share/doc/msodbcsql17/ para el controlador 17 y en /usr/share/doc/msodbcsql/ para el controlador 13.

Carga del archivo de recursos

El controlador debe cargar el archivo de recursos para funcionar. Este archivo se denomina msodbcsqlr17.rll o msodbcsqlr13.rll según la versión del controlador. La ubicación del archivo .rll es relativa a la ubicación del propio controlador (so o dylib), tal como se indica en la tabla anterior. A partir de la versión 17.1, el controlador también intenta cargar .rll desde el directorio predeterminado si se produce un error en la carga de la ruta de acceso relativa. La ruta de acceso del archivo de recursos predeterminada en Linux es /opt/microsoft/msodbcsql17/share/resources/en_US/.

Solución de problemas

Si se instaló previamente una versión del controlador y se registró con unixODBC, la instalación puede producir un error como Installation failed, ODBC Driver $1 for SQL Server detected!. Para resolver el problema, anule el registro de esa versión del controlador. Puede anular el registro de controladores mediante el comando odbcinst: odbcinst -u -d -n "ODBC Driver $1 for SQL Server. (Reemplace por $1 la versión del controlador notificada en el error de instalación). Si se produce un error en la desinstalación mediante el comando odbcinst, puede quitar manualmente las secciones del controlador del archivo odbcinst.ini. Puede encontrar la ubicación del archivo odbcinst.ini mediante el comando odbcinst -j.

Si no puede establecer una conexión con SQL Server mediante el controlador ODBC, vea el artículo sobre problemas conocidos en Solución de problemas de conexión.

Pasos siguientes

Después de instalar el controlador, puede probar la aplicación de ejemplo ODBC de C++. Para obtener más información sobre el desarrollo de aplicaciones ODBC, vea Desarrollo de aplicaciones.

Para obtener más información, vea las notas de la versión y los requisitos del sistema del controlador ODBC.