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. A partir de la versión 18.4, para aceptar el CLUF automáticamente al instalar el controlador que no es Alpine Linux (.deb o .rpm), puede crear el archivo "/opt/microsoft/msodbcsql18/ACCEPT_EULA".
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/7/6/d/76de322a-d860-4894-9945-f0cc5d6a45f8/msodbcsql18_18.4.1.1-1_$architecture.apk
curl -O https://download.microsoft.com/download/7/6/d/76de322a-d860-4894-9945-f0cc5d6a45f8/mssql-tools18_18.4.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/7/6/d/76de322a-d860-4894-9945-f0cc5d6a45f8/msodbcsql18_18.4.1.1-1_$architecture.sig
curl -O https://download.microsoft.com/download/7/6/d/76de322a-d860-4894-9945-f0cc5d6a45f8/mssql-tools18_18.4.1.1-1_$architecture.sig
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --import -
gpg --verify msodbcsql18_18.4.1.1-1_$architecture.sig msodbcsql18_18.4.1.1-1_$architecture.apk
gpg --verify mssql-tools18_18.4.1.1-1_$architecture.sig mssql-tools18_18.4.1.1-1_$architecture.apk
#Install the package(s)
sudo apk add --allow-untrusted msodbcsql18_18.4.1.1-1_$architecture.apk
sudo apk add --allow-untrusted mssql-tools18_18.4.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 Driver 17 for SQL Server
- Microsoft ODBC Driver 13.1 for SQL Server
- Microsoft ODBC Driver 13 for SQL Server
- Microsoft ODBC Driver 11 for SQL Server
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.
- Descargue la versión más reciente de
msodbcsql
.rpm
en https://packages.microsoft.com/rhel/7/prod/. - Instale las dependencias y el controlador.
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 instala 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:
Asegúrese de que tiene permisos de raíz.
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
.Cambie al directorio
msodbcsql-11.0.2270.0
; allí verá un archivo llamado install.sh.Para ver una lista de las opciones de instalación disponibles, ejecute el siguiente comando: ./install.sh.
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
.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.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
olib-dir
), especifíquelo después de la opción install.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:
rm -f /usr/bin/sqlcmd
rm -f /usr/bin/bcp
rm -rf /opt/microsoft/msodbcsql
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.