Partilhar via


Instale o driver ODBC da Microsoft para SQL Server (Linux)

Este artigo explica como instalar o driver ODBC da Microsoft para SQL Server no Linux. Ele também inclui instruções para as ferramentas de linha de comando opcionais para SQL Server (bcp e sqlcmd) e os cabeçalhos de desenvolvimento unixODBC.

Este artigo fornece comandos para instalar o driver ODBC a partir do shell bash. Se quiseres descarregar os pacotes diretamente, consulta Descarregar o Driver ODBC para SQL Server.

Microsoft ODBC 18

As seções a seguir explicam como instalar o driver ODBC da Microsoft 18 a partir do shell bash para diferentes distribuições Linux. As distribuições suportadas são Alpine Linux, Debian, Red Hat Enterprise Linux (RHEL), Oracle Linux, SUSE Linux Enterprise Server (SLES), Ubuntu e Azure Linux. A partir da versão 18.4, para aceitar automaticamente o EULA ao instalar o driver Linux não-Alpine (.deb ou .rpm), pode criar o ficheiro /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

Observação

A versão do driver 17.5 ou superior é necessária para o suporte da Alpine.

Versões anteriores

As seções a seguir fornecem instruções para instalar versões anteriores do driver ODBC da Microsoft no Linux. As seguintes versões de driver são cobertas:

Microsoft ODBC 17

As seções a seguir explicam como instalar o driver ODBC da Microsoft 17 a partir do shell bash para diferentes distribuições Linux.

Importante

Se instalaste o pacote v17 msodbcsql que esteve disponível brevemente, remove-o antes de instalar o msodbcsql17 pacote para evitar conflitos. Podes instalar o msodbcsql17 pacote lado a lado com o msodbcsql pacote 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

Observação

A versão do driver 17.5 ou superior é necessária para o suporte da Alpine.

ODBC 13,1

As seções a seguir explicam como instalar o driver ODBC da Microsoft 13.1 a partir do shell bash para diferentes distribuições 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

As seções a seguir explicam como instalar o driver ODBC da Microsoft 13 a partir do shell bash para diferentes distribuições 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

Instalação offline do ODBC 13

Se precisar de instalar o Microsoft ODBC Driver 13 num computador sem ligação à Internet, deve resolver manualmente as dependências dos pacotes. O Microsoft ODBC Driver 13 tem as seguintes dependências diretas:

  • 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 um destes pacotes tem as suas próprias dependências, que podem ou não estar presentes no sistema. Para uma solução geral para este problema, consulte a documentação do gestor de pacotes da sua distribuição: Red Hat, Ubuntu e SUSE.

Pode descarregar manualmente todos os pacotes dependentes e colocá-los juntos no computador de instalação. Depois, instala manualmente cada pacote por sua vez, terminando com o pacote 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

As seções a seguir explicam como instalar o driver Microsoft ODBC 11 no Linux. Antes de poder usar o driver, instale o gerenciador de driver unixODBC. Para obter mais informações, consulte Instalando o Gerenciador de Driver.

Etapas de instalação

Importante

Estas instruções referem-se ao msodbcsql-11.0.2270.0.tar.gz, que é o arquivo de instalação do Red Hat Linux. Se você instalar para o SUSE Linux, o nome do arquivo será msodbcsql-11.0.2260.0.tar.gz.

Para instalar o driver:

  1. Certifique-se de que você tem permissão de root.

  2. Faça o download do driver.

    Distribuição Driver Hash 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. Mude para o diretório onde o download colocou o arquivo msodbcsql-11.0.2270.0.tar.gz. Certifica-te de que tens o *.tar.gz ficheiro que corresponde à tua versão do Linux. Para extrair os ficheiros, execute o seguinte comando:

    tar xvzf msodbcsql-11.0.2270.0.tar.gz
    
  4. Mude para o msodbcsql-11.0.2270.0 diretório. Deves ver um ficheiro chamado install.sh.

  5. Para ver uma lista das opções de instalação disponíveis, execute o seguinte comando:

    ./install.sh
    
  6. Faça uma cópia de segurança de odbcinst.ini. As atualizações de instalação do driver odbcinst.ini. odbcinst.ini contém a lista de drivers registados com o Gestor de Drivers unixODBC. Para descobrir a localização da odbcinst.ini no seu computador, execute o seguinte comando:

    odbc_config --odbcinstini
    
  7. Antes de instalar o driver, execute o seguinte comando:

    ./install.sh verify
    

    A saída de ./install.sh verify relata se o seu computador tem o software necessário para suportar o driver ODBC no Linux.

  8. Quando estiver pronto para instalar o driver ODBC no Linux, execute o comando:

    ./install.sh install
    

    Se precisares de especificar um comando de instalação (bin-dir ou lib-dir), especifica o comando após a install opção.

  9. Depois de rever o contrato de licença, escreva YES para continuar com a instalação.

A instalação coloca o driver em /opt/microsoft/msodbcsql/11.0.2270.0. O driver e seus arquivos de suporte devem estar em /opt/microsoft/msodbcsql/11.0.2270.0.

Para verificar se o driver Microsoft ODBC no Linux foi registado com sucesso, execute o seguinte comando:

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

Desinstalar

Desinstale o driver ODBC 11 no Linux executando os seguintes 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"

Arquivos de driver

O driver ODBC no Linux inclui os seguintes componentes:

Componente Descrição
libmsodbcsql-17.X.so.X.X ou libmsodbcsql-13.X.so.X.X O arquivo de biblioteca dinâmica de objeto compartilhado (so) que contém todas as funcionalidades do driver. O caminho de instalação é /opt/microsoft/msodbcsql17/lib64/ para o Driver 17 e /opt/microsoft/msodbcsql/lib64/ para o Driver 13.
msodbcsqlr17.rll ou msodbcsqlr13.rll O ficheiro de recursos que acompanha a biblioteca do driver. O percurso de instalação é [driver .so directory]../share/resources/en_US/
msodbcsql.h O arquivo de cabeçalho que contém todas as novas definições necessárias para usar o driver.

Observação: Você não pode fazer referência msodbcsql.h e odbcss.h no mesmo programa.

O caminho de instalação é /opt/microsoft/msodbcsql17/include/ para o Driver 17 e /opt/microsoft/msodbcsql/include/ para o Driver 13.
LICENSE.txt O arquivo de texto que contém os termos do End-User Contrato de Licença. O caminho de instalação é /usr/share/doc/msodbcsql17/ para o Driver 17 e /usr/share/doc/msodbcsql/ para o Driver 13.
RELEASE_NOTES O ficheiro de texto que contém notas de versão. O caminho de instalação é /usr/share/doc/msodbcsql17/ para o Driver 17 e /usr/share/doc/msodbcsql/ para o Driver 13.

Carregamento de arquivos de recursos

O driver precisa carregar o arquivo de recurso para funcionar. Esse arquivo é chamado de msodbcsqlr17.rll ou msodbcsqlr13.rll dependendo da versão do driver. A localização do .rll ficheiro é relativa à localização do próprio driver (so ou dylib), conforme descrito na tabela anterior. A partir da versão 17.1, se o driver não conseguir carregar o .rll ficheiro pelo caminho relativo, também tenta carregar o .rll ficheiro a partir do diretório predefinido. O caminho do arquivo de recurso padrão no Linux é /opt/microsoft/msodbcsql17/share/resources/en_US/.

Solução de problemas

Se instalou e registou anteriormente uma versão do driver no unixODBC, a instalação pode falhar com um erro semelhante a:

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

Para resolver o problema, desregista essa versão do driver usando o odbcinst comando. Substitua $1 pela versão do driver reportada no erro de instalação:

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

Se a desinstalação ao usar o odbcinst comando falhar, pode remover manualmente secções do driver do odbcinst.ini ficheiro. Pode encontrar a localização do odbcinst.ini ficheiro usando o comando odbcinst -j.

Se não conseguir fazer uma ligação ao SQL Server usando o driver ODBC, veja o artigo sobre problemas conhecidos sobre resolução de problemas de ligação.