Partekatu bidez


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 desea descargar los paquetes directamente, consulte Descargar ODBC Driver for 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), Ubuntu y Azure Linux. A partir de la versión 18.4, para aceptar automáticamente el Acuerdo de Licencia de Usuario Final al instalar el controlador que no es de 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/9dcab408-e0d4-4571-a81a-5a0951e3445f/msodbcsql18_18.6.1.1-1_$architecture.apk
curl -O https://download.microsoft.com/download/b60bb8b6-d398-4819-9950-2e30cf725fb0/mssql-tools18_18.6.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/9dcab408-e0d4-4571-a81a-5a0951e3445f/msodbcsql18_18.6.1.1-1_$architecture.sig
curl -O https://download.microsoft.com/download/b60bb8b6-d398-4819-9950-2e30cf725fb0/mssql-tools18_18.6.1.1-1_$architecture.sig

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

#Install the package(s)
sudo apk add --allow-untrusted msodbcsql18_18.6.1.1-1_$architecture.apk
sudo apk add --allow-untrusted mssql-tools18_18.6.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 instaló el paquete v17 msodbcsql que estaba disponible brevemente, quítelo antes de instalar el paquete msodbcsql17 para evitar conflictos. Puede instalar el msodbcsql17 paquete en paralelo con el msodbcsql paquete v13.

#Download the desired package(s)
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.6.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.6.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.6.1-1_amd64.sig msodbcsql17_17.10.6.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.6.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.

if ! [[ "8" == *"$(grep VERSION_ID /etc/os-release | cut -d '"' -f 2 | cut -d '.' -f 1)"* ]];
then
    echo "Debian $(grep VERSION_ID /etc/os-release | cut -d '"' -f 2 | cut -d '.' -f 1) is not currently supported.";
    exit;
fi

# Download the package to configure the Microsoft repo
curl -sSL -O https://packages.microsoft.com/config/debian/$(grep VERSION_ID /etc/os-release | cut -d '"' -f 2 | cut -d '.' -f 1)/packages-microsoft-prod.deb
# Install the package
sudo dpkg -i packages-microsoft-prod.deb
# Delete the file
rm packages-microsoft-prod.deb

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.

if ! [[ "6 7" == *"$(grep VERSION_ID /etc/os-release | cut -d '"' -f 2 | cut -d '.' -f 1)"* ]];
then
    echo "RHEL $(grep VERSION_ID /etc/os-release | cut -d '"' -f 2 | cut -d '.' -f 1) is not currently supported.";
    exit;
fi

# Download the package to configure the Microsoft repo
curl -sSL -O https://packages.microsoft.com/config/rhel/$(grep VERSION_ID /etc/os-release | cut -d '"' -f 2 | cut -d '.' -f 1)/packages-microsoft-prod.rpm
# Install the package
sudo yum install packages-microsoft-prod.rpm
# Delete the file
rm packages-microsoft-prod.rpm

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 para ODBC 13

Si necesita instalar Microsoft ODBC Driver 13 en un equipo sin conexión a Internet, debe 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, openssldebconf (>= 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 tiene sus propias dependencias, que podrían estar presentes o no en el sistema. Para obtener una solución general a este problema, consulte la documentación del administrador de paquetes de la distribución: Red Hat, Ubuntu y SUSE.

Puede descargar manualmente todos los paquetes dependientes y colocarlos juntos en el equipo de instalación. A continuación, instale manualmente cada paquete a su vez, terminando 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, consulte 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 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. Descargue el controlador.

    Distribución Driver Hash de SHA256
    Red Hat 5 msodbcsql-11.0.2270.0.tar.gz 178280daf01a49b8322cd902b6440979adacd594c01cd2a1f081dda23dbfb343
    Red Hat 6 msodbcsql-11.0.2270.0.tar.gz e9b6bd33d174c7753b3a3f2d541713fbc156b46254484a169caa3f459dd828f7
    SUSE Linux msodbcsql-11.0.2260.0.tar.gz 86d1c5842be4f0095234a9455e18a04fdf4cc7960ec0255b37258112e2391ef5
  3. Cambie al directorio donde la descarga ha colocado el archivo msodbcsql-11.0.2270.0.tar.gz. Asegúrese de que tiene el archivo *.tar.gz que coincide con su versión de Linux. Para extraer los archivos, ejecute el siguiente comando:

    tar xvzf msodbcsql-11.0.2270.0.tar.gz
    
  4. Cambie al directorio msodbcsql-11.0.2270.0. Debería ver un archivo denominado install.sh.

  5. Para ver una lista de las opciones de instalación disponibles, ejecute el siguiente comando:

    ./install.sh
    
  6. Realice una copia de seguridad de odbcinst.ini. La 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
    
  7. 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.

  8. Cuando esté listo para instalar el controlador ODBC en Linux, ejecute el comando :

    ./install.sh install
    

    Si necesita especificar un comando de instalación (bin-dir o lib-dir), especifique el comando después de la install opción .

  9. Después de revisar 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 el controlador ODBC de Microsoft en Linux se registró correctamente, ejecute el siguiente comando:

odbcinst -q -d -n "ODBC Driver 11 for SQL Server"

Desinstalación

Desinstale el controlador ODBC 11 en Linux mediante la ejecución de 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 incluye los siguientes componentes:

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. La ruta de instalación es /opt/microsoft/msodbcsql17/lib64/ para el controlador 17 y /opt/microsoft/msodbcsql/lib64/ para el controlador 13.
msodbcsqlr17.rll o msodbcsqlr13.rll Archivo de recursos que acompaña a la biblioteca de controladores. La ruta de instalación es [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 a odbcss.h en el mismo programa.

La ruta de instalación es /opt/microsoft/msodbcsql17/include/ para el controlador 17 y /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. La ruta de instalación es /usr/share/doc/msodbcsql17/ para el controlador 17 y /usr/share/doc/msodbcsql/ para el controlador 13.
RELEASE_NOTES El archivo de texto que contiene las notas de la versión. La ruta de instalación es /usr/share/doc/msodbcsql17/ para el controlador 17 y /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 .rll archivo es relativa a la ubicación del propio controlador (so o dylib), como se describe en la tabla anterior. A partir de la versión 17.1, si el controlador no puede cargar el .rll archivo desde la ruta de acceso relativa, también intenta cargar el .rll archivo desde el directorio predeterminado. La ruta de acceso del archivo de recursos predeterminada en Linux es /opt/microsoft/msodbcsql17/share/resources/en_US/.

Solución de problemas

Si instaló y registró previamente una versión del controlador con unixODBC, la instalación podría fallar con un error similar a:

Installation failed, ODBC Driver $1 for SQL Server detected!

Para resolver el problema, anule el registro de esa versión del controlador mediante el odbcinst comando . Reemplace por $1 la versión del controlador notificada en el error de instalación:

odbcinst -u -d -n "ODBC Driver $1 for SQL Server"

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 odbcinst.ini archivo mediante el comando odbcinst -j.

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