Instalar o Microsoft ODBC Driver for SQL Server (Linux)
Artigo
Este artigo explica como instalar o Microsoft ODBC Driver for SQL Server em Linux. Também inclui instruções para as ferramentas de linha de comando opcionais para o SQL Server (bcp e sqlcmd) e os cabeçalhos de desenvolvimento unixODBC.
Este artigo fornece comandos para instalar o driver ODBC por meio do shell Bash. Caso deseje baixar os pacotes diretamente, confira Baixar o ODBC Driver for SQL Server.
Microsoft ODBC 18
As seções a seguir explicam como instalar o Microsoft ODBC Driver 18 por meio do shell Bash para diferentes distribuições do Linux. As distribuições com suporte são Alpine Linux, Debian, RHEL (Red Hat Enterprise Linux), Oracle Linux, SLES (SUSE Linux Enterprise Server) e Ubuntu. A partir da versão 18.4, para aceitar o EULA automaticamente ao instalar o driver não Alpine Linux (.deb ou .rpm), você pode criar o arquivo '/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
Observação
A versão 17.5 ou posterior do driver é necessária para compatibilidade com o Alpine.
#Debian 9-11
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
# Debian 12
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#Debian 9
curl https://packages.microsoft.com/config/debian/9/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
#Debian 10
curl https://packages.microsoft.com/config/debian/10/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
#Debian 11
curl https://packages.microsoft.com/config/debian/11/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
#Debian 12
curl https://packages.microsoft.com/config/debian/12/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install -y unixodbc-dev
# optional: kerberos library for debian-slim distributions
sudo apt-get install -y libgssapi-krb5-2
Observação
É possível substituir a configuração da variável de ambiente ACCEPT_EULA pela configuração da variável debconf msodbcsql/ACCEPT_EULA em vez de: echo msodbcsql18 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
Erro: as seguintes assinaturas não puderam ser verificadas porque a chave pública não está disponível
Sintoma
Você recebe uma mensagem de erro durante a execução apt-get update semelhante ao seguinte texto:
W: GPG error: https://packages.microsoft.com/debian/12/prod bookworm InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY EB3E94ADBE1229CF
E: The repository 'https://packages.microsoft.com/debian/12/prod bookworm InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Resolução
Depois de fazer o download do arquivo /etc/apt/sources.list.d/mssql-release.list, edite-o para remover o valor signed-by.
Antigo: deb [arch=amd64,arm64,armhf signed-by=/usr/share/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/debian/12/prod bookworm main
Novo: deb [arch=amd64,arm64,armhf] https://packages.microsoft.com/debian/12/prod bookworm main
Execute sudo apt-get update e continue a instalação a partir daí.
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#RHEL 7 and Oracle Linux 7
curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
#RHEL 8 and Oracle Linux 8
curl https://packages.microsoft.com/config/rhel/8/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
#RHEL 9
curl https://packages.microsoft.com/config/rhel/9/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
sudo ACCEPT_EULA=Y yum install -y msodbcsql18
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo yum install -y unixODBC-devel
curl -O https://packages.microsoft.com/keys/microsoft.asc
sudo rpm --import microsoft.asc
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#SLES 12
sudo zypper ar https://packages.microsoft.com/config/sles/12/prod.repo
#SLES 15
sudo zypper ar https://packages.microsoft.com/config/sles/15/prod.repo
#(Only for driver 17.3 and below)
sudo SUSEConnect -p sle-module-legacy/15/x86_64
sudo ACCEPT_EULA=Y zypper install -y msodbcsql18
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y zypper install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo zypper install -y unixODBC-devel
if ! [[ "18.04 20.04 22.04 23.04 24.04" == *"$(lsb_release -rs)"* ]];
then
echo "Ubuntu $(lsb_release -rs) is not currently supported.";
exit;
fi
# Add the signature to trust the Microsoft repo
# For Ubuntu versions < 24.04
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
# For Ubuntu versions >= 24.04
curl https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
# Add repo to apt sources
curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
# Install the driver
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install -y unixodbc-dev
Observação
É possível substituir a configuração da variável de ambiente "ACCEPT_EULA" pela configuração da variável debconf "msodbcsql/ACCEPT_EULA" em vez de: echo msodbcsql18 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
Versões anteriores
As seções a seguir fornecem instruções sobre como instalar versões anteriores do Microsoft ODBC Driver no Linux. As seguintes versões de driver são abordadas:
As seções a seguir explicam como instalar o Microsoft ODBC Driver 17 por meio do shell Bash para diferentes distribuições do Linux.
Importante
Se você tiver instalado o pacote v17 msodbcsql que estava disponível brevemente, deverá removê-lo antes de instalar o pacote msodbcsql17. Isso evitará conflitos. O pacote msodbcsql17 pode ser instalado lado a lado com o pacote 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
Observação
A versão 17.5 ou posterior do driver é necessária para compatibilidade com o Alpine.
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
# Debian 12
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#Debian 9
curl https://packages.microsoft.com/config/debian/9/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
#Debian 10
curl https://packages.microsoft.com/config/debian/10/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
#Debian 11
curl https://packages.microsoft.com/config/debian/11/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
#Debian 12
curl https://packages.microsoft.com/config/debian/12/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install -y unixodbc-dev
# optional: kerberos library for debian-slim distributions
sudo apt-get install -y libgssapi-krb5-2
Observação
É possível substituir a configuração da variável de ambiente "ACCEPT_EULA" pela configuração da variável debconf "msodbcsql/ACCEPT_EULA" em vez de: echo msodbcsql17 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#RHEL 7 and Oracle Linux 7
curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
#RHEL 8 and Oracle Linux 8
curl https://packages.microsoft.com/config/rhel/8/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
#RHEL 9
curl https://packages.microsoft.com/config/rhel/9/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
sudo ACCEPT_EULA=Y yum install -y msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo yum install -y unixODBC-devel
curl -O https://packages.microsoft.com/keys/microsoft.asc
sudo rpm --import microsoft.asc
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#SLES 12
sudo zypper ar https://packages.microsoft.com/config/sles/12/prod.repo
#SLES 15
sudo zypper ar https://packages.microsoft.com/config/sles/15/prod.repo
#(Only for driver 17.3 and below)
sudo SUSEConnect -p sle-module-legacy/15/x86_64
sudo ACCEPT_EULA=Y zypper install -y msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y zypper install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo zypper install -y unixODBC-devel
if ! [[ "16.04 18.04 20.04 22.04" == *"$(lsb_release -rs)"* ]];
then
echo "Ubuntu $(lsb_release -rs) is not currently supported.";
exit;
fi
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install -y unixodbc-dev
Observação
É possível substituir a configuração da variável de ambiente "ACCEPT_EULA" pela configuração da variável debconf "msodbcsql/ACCEPT_EULA" em vez de: echo msodbcsql17 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
ODBC 13.1
As seções a seguir explicam como instalar o Microsoft ODBC Driver 13.1 por meio do shell Bash para diferentes distribuições do Linux.
Caso precise que o Microsoft ODBC Driver 13 seja instalado em um computador sem conexão com a Internet, você deve resolver as dependências do pacote de modo manual. O Microsoft ODBC Driver 13 tem as seguintes dependências diretas:
Red Hat: glibc, e2fsprogs, krb5-libs, openssl, unixODBC
SUSE: glibc, libuuid1, krb5, openssl, unixODBC
Por sua vez, cada um desses pacotes tem suas próprias dependências, que podem ou não estar presentes no sistema. Para uma solução geral para esse problema, veja a documentação do gerenciador de pacotes de distribuição: Red Hat, Ubuntu e SUSE
Também é comum baixar todos os pacotes dependentes de modo manual e colocá-los em conjunto no computador de instalação, depois instalar de modo manual cada pacote por vez, instalando o pacote Microsoft ODBC Driver 13 por último.
Após concluir a instalação do pacote, será possível confirmar se o Microsoft ODBC Driver 13 pode localizar as respectivas dependências executando o comando ldd e inspecionando a respectiva saída para conferir se há bibliotecas ausentes:
As seções a seguir explicam como instalar o Microsoft ODBC Driver 11 no Linux. Antes de poder usar o driver, instale o Gerenciador de Driver unixODBC. Para obter mais informações, veja Instalação do 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 para o Red Hat Linux. Se você instalar a Versão Prévia para SUSE Linux, o nome do arquivo será msodbcsql-11.0.2260.0.tar.gz.
Para instalar o driver:
Verifique se você tem permissão de raiz.
Altere o diretório em que o download colocou o arquivo msodbcsql-11.0.2270.0.tar.gz. Verifique se você tem o arquivo *.tar.gz que corresponde à sua versão do Linux. Para extrair os arquivos, execute o seguinte comando: tar xvzf msodbcsql-11.0.2270.0.tar.gz.
Altere para o diretório msodbcsql-11.0.2270.0. Lá, você deverá ver um arquivo chamado install.sh.
Para ver uma lista das opções de instalação disponíveis, execute o seguinte comando: ./install.sh.
Faça um backup de odbcinst.ini. A instalação do driver atualiza o odbcinst.ini. O odbcinst.ini contém a lista de drivers que estão registrados com o Gerenciador de Driver unixODBC. Para descobrir a localização do odbcinst.ini em seu computador, execute o seguinte comando: odbc_config --odbcinstini.
Antes de instalar o driver, execute o seguinte comando: ./install.sh verify. A saída de ./install.sh verify informa se o seu computador tem o software necessário para suporte ao driver ODBC em Linux.
Quando você estiver pronto para instalar o driver ODBC no Linux, execute este comando: ./install.sh install. Se precisar especificar um comando de instalação (bin-dir ou lib-dir), especifique o comando após a opção install.
Depois de ler o contrato de licença, digite 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 no /opt/microsoft/msodbcsql/11.0.2270.0.
Para verificar se o driver Microsoft ODBC em Linux foi registrado com êxito, execute o seguinte comando: odbcinst -q -d -n "ODBC Driver 11 for SQL Server".
Desinstalar
Você pode desinstalar o ODBC Driver 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 do driver
O driver ODBC no Linux consiste nos seguintes componentes:
Componente
Descrição
libmsodbcsql-17.X.so.X.X ou libmsodbcsql-13.X.so.X.X
O arquivo de biblioteca dinâmica (so) do objeto compartilhado que contém toda a funcionalidade do driver. Esse arquivo é instalado em /opt/microsoft/msodbcsql17/lib64/ para o Driver 17 e em /opt/microsoft/msodbcsql/lib64/ para o Driver 13.
msodbcsqlr17.rll ou msodbcsqlr13.rll
O arquivo de recursos que acompanha a biblioteca do driver. Esse arquivo é instalado em [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: não será possível referenciar as variáveis msodbcsql.h e odbcss.h no mesmo programa.
msodbcsql.h é instalado em /opt/microsoft/msodbcsql17/include/ para o Driver 17 e em /opt/microsoft/msodbcsql/include/ para o Driver 13.
LICENSE.txt
O arquivo de texto que contém os termos do Contrato de Licença do Usuário Final. Esse arquivo é colocado no /usr/share/doc/msodbcsql17/ para o Driver 17 e em /usr/share/doc/msodbcsql/ para o Driver 13.
RELEASE_NOTES
O arquivo de texto que contém as notas sobre a versão. Esse arquivo é colocado no /usr/share/doc/msodbcsql17/ para o Driver 17 e em /usr/share/doc/msodbcsql/ para o Driver 13.
Carregamento de arquivo de recursos
O driver precisa carregar o arquivo de recurso para funcionar. Esse arquivo é denominado msodbcsqlr17.rll ou msodbcsqlr13.rll, dependendo da versão do driver. A localização do arquivo .rll é relativa à localização do próprio driver (so ou dylib), conforme indicado na tabela anterior. A partir da versão 17.1, o driver também tentará carregar o .rll do diretório padrão se o carregamento do caminho relativo falhar. O caminho do arquivo de recurso padrão no Linux é /opt/microsoft/msodbcsql17/share/resources/en_US/.
Solucionar problemas
Se a versão do driver foi instalada anteriormente e registrada com unixODBC, a instalação poderá falhar com um erro como Installation failed, ODBC Driver $1 for SQL Server detected!. Para resolver o problema, cancele o registro dessa versão do driver. Você pode cancelar o registro de drivers por meio do comando odbcinst: odbcinst -u -d -n "ODBC Driver $1 for SQL Server. (Substitua $1 pela versão do driver informada no erro de instalação.) Se a desinstalação por meio do comando odbcinst falhar, você poderá remover manualmente as seções do driver do arquivo odbcinst.ini. Você pode encontrar o local do arquivo odbcinst.ini por meio do comando odbcinst -j.
Caso não seja possível estabelecer uma conexão com o SQL Server usando o driver ODBC, confira o artigo sobre problemas conhecidos em Solução de problemas de conexão.