Installare Microsoft ODBC Driver for SQL Server (Linux)

Questo articolo illustra come installare Microsoft ODBC Driver for SQL Server in Linux. Sono inoltre incluse le istruzioni per gli strumenti della riga di comando facoltativi per SQL Server (bcp e sqlcmd) e le intestazioni di sviluppo unixODBC.

Questo articolo fornisce i comandi per l'installazione del driver ODBC dalla shell Bash. Se si vogliono scaricare direttamente i pacchetti, vedere Scaricare ODBC Driver for SQL Server.

Microsoft ODBC 18

Le sezioni seguenti illustrano come installare Microsoft ODBC Driver 18 dalla shell Bash per diverse distribuzioni Linux. Le distribuzioni supportate sono Alpine Linux, Debian, Red Hat Enterprise Linux (RHEL), Oracle Linux, SUSE Linux Enterprise Server (SLES) e Ubuntu. A partire dalla versione 18.4, per accettare automaticamente il contratto di licenza durante l'installazione del driver non Alpine Linux (.deb o rpm), è possibile creare il file "/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

È necessaria la versione del driver 17.5 o versione successiva per il supporto di Alpine.

Versioni precedenti

Nelle sezioni seguenti vengono fornite le istruzioni per l'installazione delle versioni precedenti di Microsoft ODBC Driver in Linux. Le informazioni riguardano le versioni seguenti del driver:

Microsoft ODBC 17

Le sezioni seguenti illustrano come installare Microsoft ODBC Driver 17 dalla shell Bash per diverse distribuzioni Linux.

Importante

Se è stato installato il pacchetto msodbcsql v17 rimasto disponibile per poco tempo, rimuoverlo prima di installare il pacchetto msodbcsql17. Si eviteranno così conflitti. È possibile installare il pacchetto msodbcsql17 side-by-side con il pacchetto 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

È necessaria la versione del driver 17.5 o versione successiva per il supporto di Alpine.

ODBC 13.1

Le sezioni seguenti illustrano come installare Microsoft ODBC Driver 13.1 dalla shell Bash per diverse distribuzioni 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

Le sezioni seguenti illustrano come installare Microsoft ODBC Driver 13 dalla shell Bash per diverse distribuzioni 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

Installazione offline

Se si deve installare il driver Microsoft ODBC 13 in un computer senza connessione Internet, sarà necessario risolvere manualmente le dipendenze del pacchetto. Il driver Microsoft ODBC 13 presenta le dipendenze dirette seguenti:

  • 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

Ognuno di questi pacchetti ha a sua volta le proprie dipendenze, che potrebbero o meno essere presenti nel sistema. Per una soluzione generale di questo problema, fare riferimento alla documentazione della gestione pacchetti per la distribuzione: Red Hat, Ubuntu e SUSE

È anche una pratica comune scaricare manualmente tutti i pacchetti dipendenti, inserirli nel computer di installazione, quindi installare manualmente ogni pacchetto e terminare con il pacchetto 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

Le sezioni seguenti illustrano come installare Microsoft ODBC Driver 11 in Linux. Prima di poter usare il driver, installare Gestione driver unixODBC. Per altre informazioni, vedere Installazione di Gestione driver.

Passaggi di installazione

Importante

Queste istruzioni fanno riferimento a msodbcsql-11.0.2270.0.tar.gz, il file di installazione per Red Hat Linux. Se si installa l'anteprima per SUSE Linux, il nome del file è msodbcsql-11.0.2260.0.tar.gz.

Per installare il driver:

  1. Assicurarsi di disporre dell'autorizzazione di radice.

  2. Passare alla directory in cui il download ha inserito il file msodbcsql-11.0.2270.0.tar.gz. Verificare di avere il file *.tar.gz corrispondente alla versione di Linux in uso. Per estrarre i file, eseguire il comando seguente, tar xvzf msodbcsql-11.0.2270.0.tar.gz.

  3. Passare alla directory msodbcsql-11.0.2270.0 contenente un file denominato install.sh.

  4. Per visualizzare un elenco delle opzioni di installazione disponibili, eseguire il comando seguente: ./install.sh

  5. Eseguire il backup di odbcinst.ini. L'installazione del driver aggiorna odbcinst.ini. odbcinst.ini contiene l'elenco dei driver registrati in Gestione driver unixODBC. Per individuare il percorso di odbcinst.ini nel computer in uso, eseguire il comando seguente: odbc_config --odbcinstini.

  6. Prima di installare il driver, eseguire il comando seguente: ./install.sh verify. L'output di ./install.sh verify segnala se il computer dispone del software necessario per supportare il driver ODBC in Linux.

  7. Quando si è pronti a installare il driver ODBC in Linux, eseguire il comando seguente: ./install.sh install. Se è necessario specificare un comando di installazione (bin-dir o lib-dir), specificare il comando dopo l'opzione installa.

  8. Dopo aver esaminato il contratto di licenza, digitare YES per continuare l'installazione.

L'installazione inserisce il driver in /opt/microsoft/msodbcsql/11.0.2270.0. Il driver e i relativi file di supporto devono trovarsi in /opt/microsoft/msodbcsql/11.0.2270.0.

Per verificare che il driver ODBC Microsoft sia stato registrato in Linux, eseguire il comando seguente: odbcinst -q -d -n "ODBC Driver 11 for SQL Server".

Disinstalla

È possibile disinstallare il driver ODBC 11 in Linux eseguendo i comandi seguenti:

  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"

File dei driver

Il driver ODBC in Linux include i componenti seguenti:

Componente Descrizione
libmsodbcsql-17.X.so.X.X o libmsodbcsql-13.X.so.X.X File della libreria di collegamento dinamico dell'oggetto condiviso (so) che contiene tutte le funzionalità del driver. Questo file viene installato in /opt/microsoft/msodbcsql17/lib64/ per Driver 17 e in /opt/microsoft/msodbcsql/lib64/ per Driver 13.
msodbcsqlr17.rll oppure msodbcsqlr13.rll File di risorse associato per la libreria del driver. Questo file viene installato in [driver .so directory]../share/resources/en_US/
msodbcsql.h File di intestazione che contiene tutte le nuove definizioni necessarie per usare il driver.

Nota: non è possibile fare riferimento a msodbcsql.h e odbcss.h nello stesso programma.

msodbcsql.h viene installato in /opt/microsoft/msodbcsql17/include/ per Driver 17 e in /opt/microsoft/msodbcsql/include/ per Driver 13.
LICENSE.txt File di testo che contiene i termini del contratto di licenza con l'utente finale. Questo file viene inserito in /usr/share/doc/msodbcsql17/ per Driver 17 e in /usr/share/doc/msodbcsql/ per Driver 13.
RELEASE_NOTES File di testo che contiene le note sulla versione. Questo file viene inserito in /usr/share/doc/msodbcsql17/ per Driver 17 e in /usr/share/doc/msodbcsql/ per Driver 13.

Caricamento del file di risorse

Perché possa funzionare, il driver deve caricare il file di risorse. Questo file è denominato msodbcsqlr17.rll o msodbcsqlr13.rll a seconda della versione del driver. La posizione del file .rll dipende dalla posizione del driver stesso (so o dylib), come indicato nella tabella precedente. A partire dalla versione 17.1 il driver tenta anche di caricare il file .rll dalla directory predefinita se il caricamento dal percorso relativo non riesce. Il percorso del file di risorse predefinito in Linux è /opt/microsoft/msodbcsql17/share/resources/en_US/.

Risoluzione dei problemi

Se una versione del driver è stata installata e registrata in precedenza con unixODBC, l'installazione potrebbe non riuscire, segnalando un errore simile a Installation failed, ODBC Driver $1 for SQL Server detected!. Per risolvere il problema, annullare la registrazione di quella versione del driver. È possibile annullare la registrazione dei driver tramite il comando odbcinst: odbcinst -u -d -n "ODBC Driver $1 for SQL Server. (Sostituire $1 con la versione del driver segnalato nell'errore di installazione). Se la disinstallazione tramite il comando odbcinst non riesce, è possibile rimuovere manualmente sezioni del driver dal file odbcinst.ini. È possibile trovare il percorso del file odbcinst.ini tramite il comando odbcinst -j.

Se non è possibile effettuare una connessione a SQL Server tramite il driver ODBC, vedere l'articolo sui problemi noti dedicato alla risoluzione dei problemi di connessione.