Installation von Microsoft ODBC Driver for SQL Server (Linux)

In diesem Artikel wird die Installation von Microsoft ODBC Driver for SQL Server unter Linux erläutert. Er enthält außerdem Anweisungen für die optionalen Befehlszeilentools für SQL Server (bcp und sqlcmd) und die unixODBC-Entwicklungsheader.

In diesem Artikel finden Sie Befehle zum Installieren des ODBC-Treibers über die Bash-Shell. Informationen zum direkten Herunterladen der Pakete finden Sie unter Herunterladen von ODBC Driver for SQL Server.

Microsoft ODBC 18

In den folgenden Abschnitten erfahren Sie, wie Sie Microsoft ODBC Driver 18 für verschiedene Linux-Distributionen über die Bash-Shell herunterladen. Unterstützte Distributionen sind Alpine Linux, Debian, Red Hat Enterprise Linux (RHEL), Oracle Linux, SUSE Linux Enterprise Server (SLES) und Ubuntu. Ab Version 18.4 können Sie die Datei „/opt/microsoft/msodbcsql18/ACCEPT_EULA“ erstellen, um den EULA bei der Installation des Nicht-Alpine-Linux-Treibers (.deb oder .rpm) automatisch zu akzeptieren.

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

Hinweis

Die Treiberversion 17.5 oder höher ist für die Unterstützung von Alpine erforderlich.

Vorgängerversionen

In den folgenden Abschnitten finden Sie Anweisungen zum Installieren vorheriger Versionen von Microsoft ODBC Driver unter Linux. Die folgenden Treiberversionen werden abgedeckt:

Microsoft ODBC 17

In den folgenden Abschnitten erfahren Sie, wie Sie Microsoft ODBC Driver 17 für verschiedene Linux-Distributionen über die Bash-Shell herunterladen.

Wichtig

Wenn Sie das msodbcsql-Paket der Version 17 installiert haben, das kurz verfügbar war, sollten Sie es entfernen, bevor Sie das msodbcsql17-Paket installieren. Dadurch werden Konflikte vermieden. Das msodbcsql17-Paket und das msodbcsql-Paket der Version 13 können nebeneinander installiert werden.

#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

Hinweis

Die Treiberversion 17.5 oder höher ist für die Unterstützung von Alpine erforderlich.

ODBC 13.1

In den folgenden Abschnitten erfahren Sie, wie Sie Microsoft ODBC Driver 13.1 für verschiedene Linux-Distributionen über die Bash-Shell herunterladen.

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

In den folgenden Abschnitten erfahren Sie, wie Sie Microsoft ODBC Driver 13 für verschiedene Linux-Distributionen über die Bash-Shell herunterladen.

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

Offlineinstallation

Wenn der Microsoft ODBC-Treiber 13 auf einem Computer ohne Internetverbindung installiert werden muss, müssen Paketabhängigkeiten manuell aufgelöst werden. Der Microsoft ODBC-Treiber 13 hat die folgenden direkten Abhängigkeiten:

  • 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

Jedes dieser Pakete hat wiederum seine eigenen Abhängigkeiten, die auf dem System entweder vorhanden oder nicht vorhanden sind. Eine allgemeine Lösung für das Problem finden Sie in der Paket-Manager-Dokumentation Ihrer Distribution: Red Hat, Ubuntu und SuSE.

Es ist außerdem üblich, alle abhängigen Pakete manuell herunterzuladen und sie zusammen auf dem Installationscomputer zu platzieren, dann wiederum jedes Paket manuell zu installieren und dabei mit dem ODBC-Treiberpaket 13 für Microsoft zu enden.

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

In den folgenden Abschnitten wird die Installation von Microsoft ODBC Driver 11 unter Linux erläutert. Sie müssen den unixODBC-Treiber-Manager installieren, bevor Sie den Treiber verwenden können. Weitere Informationen finden Sie unter Installieren des Treiber-Managers.

Installationsschritte

Wichtig

Diese Anleitung bezieht sich auf msodbcsql-11.0.2270.0.tar.gz, die Installationsdatei für Red Hat Linux. Wenn Sie die Vorschauversion von SUSE Linux installieren, ist der Dateiname msodbcsql-11.0.2260.0.tar.gz.

Den Treiber installieren:

  1. Stellen Sie sicher, dass Sie die Root-Berechtigung besitzen.

  2. Wechseln Sie zu dem Verzeichnis, in dem der Download die Datei msodbcsql-11.0.2270.0.tar.gz platziert hat. Stellen Sie sicher, dass Sie die zu Ihrer Linux-Version passende Datei „*.tar.g“ besitzen. Führen Sie den folgenden Befehl aus, um die Dateien zu extrahieren: tar xvzf msodbcsql-11.0.2270.0.tar.gz.

  3. Wechseln Sie zum Verzeichnis msodbcsql-11.0.2270.0, das eine Datei namens install.sh enthalten sollte.

  4. Um eine Liste aller verfügbaren Installationsoptionen zu erhalten, führen Sie den folgenden Befehl aus: ./install.sh.

  5. Führen Sie eine Sicherung von odbcinst.inimittels Backup durch. Die Treiberinstallation aktualisiert odbcinst.ini. „odbcinst.ini“ beinhaltet die Liste der Treiber, die beim unixODBC-Treiber-Manager registriert sind. Um den Speicherort von „odbcinst.ini“ auf Ihrem Computer zu finden, führen Sie den folgenden Befehl aus: odbc_config --odbcinstini.

  6. Führen Sie den folgenden Befehl aus, bevor Sie den Treiber installieren: ./install.sh verify. Die Ausgabe von ./install.sh verify gibt an, ob Ihr Computer über die erforderliche Software verfügt, um den ODBC-Treiber unter Linux zu unterstützen.

  7. Wenn Sie bereit sind, den ODBC-Treiber unter Linux zu installieren, führen Sie diesen Befehl aus: ./install.sh install. Falls Sie einen Installationsbefehl angeben müssen (bin-dir oder lib-dir), geben Sie den Befehl nach der Option install an.

  8. Lesen Sie die Lizenzvereinbarung und geben Sie YES ein, um mit der Installation fortzufahren.

Die Installation platziert den Treiber in /opt/microsoft/msodbcsql/11.0.2270.0. Der Treiber und seine Unterstützungsdateien müssen sich in /opt/microsoft/msodbcsql/11.0.2270.0 befinden.

Um zu überprüfen, ob der ODBC-Treiber unter Linux erfolgreich registriert wurde, führen Sie den folgenden Befehl aus: odbcinst -q -d -n "ODBC Driver 11 for SQL Server".

Deinstallieren

Sie können den ODBC-Treiber 11 unter Linux deinstallieren, indem Sie die folgenden Befehle ausführen:

  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"

Treiberdateien

Der ODBC-Treiber unter Linux besteht aus den folgenden Komponenten:

Komponente BESCHREIBUNG
libmsodbcsql-17.X.so.X.X oder libmsodbcsql-13.X.so.X.X Das freigegebene Objekt (so) der dynamischen Bibliotheksdatei, das die gesamte Funktionalität des Treibers enthält. Diese Datei wird in /opt/microsoft/msodbcsql17/lib64/ für den Treiber 17 und in /opt/microsoft/msodbcsql/lib64/ für den Treiber 13 installiert.
msodbcsqlr17.rll oder msodbcsqlr13.rll Die begleitende Ressourcendatei für die Treiberbibliothek. Diese Datei wird in [driver .so directory]../share/resources/en_US/ installiert.
msodbcsql.h Die Headerdatei, die alle erforderlichen neuen Definitionen für die Verwendung des Treibers enthält.

Hinweis: Sie können nicht im selben Programm auf „msodbcsql.h“ und „odbcss.h“ verweisen.

„msodbcsql“ wird in /opt/microsoft/msodbcsql17/include/ für den Treiber 17 und in /opt/microsoft/msodbcsql/include/ für den Treiber 13 installiert.
LICENSE.txt Die Textdatei, die die Bestimmungen des Endbenutzer-Lizenzvertrags enthält. Diese Datei wird in /usr/share/doc/msodbcsql17/ für den Treiber 17 und in /usr/share/doc/msodbcsql/ für den Treiber 13 platziert.
RELEASE_NOTES Die Textdatei, die die Versionshinweise enthält. Diese Datei wird in /usr/share/doc/msodbcsql17/ für den Treiber 17 und in /usr/share/doc/msodbcsql/ für den Treiber 13 platziert.

Laden der Ressourcendatei

Der Treiber muss die Ressourcendatei laden, um zu funktionieren. Diese Datei heißt msodbcsqlr17.rll oder msodbcsqlr13.rll, je nach Treiberversion. Wie oben in der Tabelle aufgeführt, ist der Speicherort der .rll-Datei relativ zum Speicherort des Treibers selbst (so oder dylib). Ab Version 17.1 versucht der Treiber auch, die .rll-Datei aus dem Standardverzeichnis zu laden, wenn das Laden aus dem relativen Pfad fehlschlägt. Der Standardressourcendatei-Pfad unter Linux lautet /opt/microsoft/msodbcsql17/share/resources/en_US/.

Problembehandlung

Wenn eine Version des Treibers zuvor installiert und bei unixODBC registriert wurde, schlägt die Installation möglicherweise mit einem Fehler wie Installation failed, ODBC Driver $1 for SQL Server detected! fehl. Heben Sie die Registrierung dieser Treiberversion auf, um das Problem zu beheben. Sie können die Registrierung von Treibern über den odbcinst-Befehl aufheben: odbcinst -u -d -n "ODBC Driver $1 for SQL Server. (Ersetzen Sie $1 durch die im Installationsfehler gemeldete Version des Treibers.) Wenn bei der Deinstallation über den odbcinst-Befehl ein Fehler auftritt, können Sie Treiberabschnitte manuell aus der Datei odbcinst.ini entfernen. Sie können den Speicherort der Datei odbcinst.ini über den odbcinst -j-Befehl ermitteln.

Wenn Sie mit dem ODBC-Treiber keine Verbindung mit SQL Server herstellen können, finden Sie im Artikel zu bekannten Problemen weitere Informationen zur Problembehandlung bei Verbindungsproblemen.