安裝 Microsoft ODBC Driver for SQL Server (Linux)

本文說明如何在 Linux 上安裝 Microsoft ODBC Driver for SQL Server, 以及如何使用適用於 SQL Server (bcpsqlcmd) 與 unixODBC 開發標頭的選擇性命令列工具。

本文提供從 Bash Shell 安裝 ODBC 驅動程式的命令。 如果想要直接下載套件,請參閱下載 ODBC Driver for SQL Server

Microsoft ODBC 18

下列各節說明如何從不同 Linux 發行版本的 Bash Shell 安裝 Microsoft ODBC Driver 18。 支援的發行版本包括 Alpine Linux、Debian、Red Hat Enterprise Linux (RHEL)、Oracle Linux、SUSE Linux Enterprise Server (SLES) 和 Ubuntu。

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/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$architecture.apk
curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/mssql-tools18_18.3.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/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$architecture.sig
curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/mssql-tools18_18.3.1.1-1_$architecture.sig

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

#Install the package(s)
sudo apk add --allow-untrusted msodbcsql18_18.3.3.1-1_$architecture.apk
sudo apk add --allow-untrusted mssql-tools18_18.3.1.1-1_$architecture.apk

注意

Alpine 支援需要驅動程式 17.5 版或更新版本。

舊版

下列各節提供在 Linux 上安裝舊版 Microsoft ODBC 驅動程式的指示。 涵蓋下列驅動程式版本:

Microsoft ODBC 17

下列各節說明如何從不同 Linux 發行版本的 Bash Shell 安裝 Microsoft ODBC Driver 17。

重要

如果您已安裝短暫提供的第 17 版 msodbcsql 套件,您應該先移除它,再安裝 msodbcsql17 套件。 如此可避免衝突。 msodbcsql17 套件可以和 msodbcsql 第 13 版套件並存安裝。

#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

注意

Alpine 支援需要驅動程式 17.5 版或更新版本。

ODBC 13.1

下列各節說明如何從不同 Linux 發行版本的 Bash Shell 安裝 Microsoft ODBC Driver 13.1。

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

下列各節說明如何從不同 Linux 發行版本的 Bash Shell 安裝 Microsoft ODBC Driver 13。

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

離線安裝

如果您需要在沒有網際網路連線的電腦上安裝 Microsoft ODBC Driver 13,您必須手動解析套件相依性。 Microsoft ODBC Driver 13 具有下列直接相依性:

  • 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

這些每個套件都有自己的相依性,而這些不一定會存在於系統上。 如需此問題的一般解決方案,請參閱散發套件的套件管理員文件:RedhatUbuntuSUSE

也很常發生手動下載所有相依的套件並將其一起放在安裝電腦上,然後依次手動安裝每個套件,最後安裝 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

下列各節說明如何在 Linux 上安裝 Microsoft ODBC Driver 11。 您必須先安裝 unixODBC 驅動程式管理員,才能使用驅動程式。 如需詳細資訊,請參閱安裝驅動程式管理員

安裝步驟

重要

這些指令參照 msodbcsql-11.0.2270.0.tar.gz,這是 Red Hat Linux 的安裝檔案。 如果您要安裝 SUSE Linux (預覽),檔案名稱為 msodbcsql-11.0.2260.0.tar.gz

若要安裝驅動程式:

  1. 請確定您擁有根權限。

  2. 切換至用於放置所下載檔案 msodbcsql-11.0.2270.0.tar.gz 的目錄。 請確定您有與您的 Linux 版本相符的 *.tar.gz 檔案。 若要擷取檔案,請執行下列命令:tar xvzf msodbcsql-11.0.2270.0.tar.gz

  3. 切換至 msodbcsql-11.0.2270.0 目錄,在該處您應會看到稱為 install.sh 的檔案。

  4. 若要檢視可用的安裝選項清單,請執行下列命令: ./install.sh

  5. 備份 odbcinst.ini。 驅動程式安裝會更新 odbcinst.ini。 odbcinst.ini 包含會向 unixODBC 驅動程式管理員註冊的驅動程式清單。 若要探索 odbcinst.ini 在電腦上的位置,請執行下列命令:odbc_config --odbcinstini

  6. 安裝驅動程式之前,請執行下列命令:./install.sh verify./install.sh verify 的輸出會報告您的電腦是否具有必要的軟體可支援 ODBC Driver on Linux。

  7. 當您準備好要安裝 ODBC Driver on Linux 時,請執行下列命令:./install.sh install。 如果您要指定安裝命令 (bin-dirlib-dir),請在 install 選項之後指定該命令。

  8. 檢閱授權合約之後,請輸入 YES 繼續安裝。

安裝會將驅動程式放在 /opt/microsoft/msodbcsql/11.0.2270.0。 驅動程式及其支援檔案必須位於 /opt/microsoft/msodbcsql/11.0.2270.0

若要確認已成功註冊 Microsoft ODBC Driver on Linux,請執行下列命令:odbcinst -q -d -n "ODBC Driver 11 for SQL Server"

解除安裝

您可以執行下列命令,以解除安裝 ODBC Driver 11 on Linux:

  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"

驅動程式檔案

Linux 上的 ODBC 驅動程式包含下列元件:

元件 描述
libmsodbcsql-17.X.so.X.X 或 libmsodbcsql-13.X.so.X.X 共用物件 (so) 動態程式庫檔案,其中包含驅動程式的所有功能。 針對 Driver 17,這個檔案會安裝在 /opt/microsoft/msodbcsql17/lib64/,針對 Driver 13 則在 /opt/microsoft/msodbcsql/lib64/
msodbcsqlr17.rllmsodbcsqlr13.rll 隨附驅動程式程式庫的資源檔。 這個檔案會安裝在 [driver .so directory]../share/resources/en_US/
msodbcsql.h 標頭檔,其中包含使用驅動程式所需的所有新定義。

注意:您無法在相同的程式中參考 msodbcsql.h 和 odbcss.h。

針對 Driver 17,msodbcsql.h 會安裝在 /opt/microsoft/msodbcsql17/include/,針對 Driver 13 則在 /opt/microsoft/msodbcsql/include/
LICENSE.txt 文字檔案,其中包含授權條款。 針對 Driver 17,這個檔案會放在 /usr/share/doc/msodbcsql17/,針對 Driver 13 則在 /usr/share/doc/msodbcsql/
RELEASE_NOTES 文字檔案,其中包含版本資訊。 針對 Driver 17,這個檔案會放在 /usr/share/doc/msodbcsql17/,針對 Driver 13 則在 /usr/share/doc/msodbcsql/

載入資源檔

驅動程式需要載入資源檔才能運作。 這個檔案稱為 msodbcsqlr17.rllmsodbcsqlr13.rll,視驅動程式版本而定。 .rll 檔案的位置是相對於驅動程式本身 (sodylib) 的位置,如上表所述。 到 17.1 版為止,驅動程式也會嘗試從預設目錄載入 .rll,如果從相對路徑載入失敗的話。 Linux 上的預設資源檔路徑為 /opt/microsoft/msodbcsql17/share/resources/en_US/

疑難排解

如果先前已安裝的驅動程式版本註冊至 unixODBC,則安裝可能會失敗,並出現類似 Installation failed, ODBC Driver $1 for SQL Server detected! 的錯誤。 若要解決此問題,請取消註冊該版本的驅動程式。 您可以透過 odbcinst 命令取消註冊驅動程式:odbcinst -u -d -n "ODBC Driver $1 for SQL Server。 (將 $1 取代為安裝錯誤中所報告的驅動程式版本。) 如果透過 odbcinst 命令解除安裝失敗,您可以從 odbcinst.ini 檔案手動移除驅動程式區段。 您可以透過命令 odbcinst -j 找到 odbcinst.ini 檔案的位置。

如果無法使用 ODBC 驅動程式建立與 SQL Server 的連線,請參閱已知問題一文中的針對連線問題進行疑難排解

後續步驟

在安裝驅動程式後,即可嘗試使用 C++ ODBC 範例應用程式。 如需開發 ODBC 應用程式的詳細資訊,請參閱開發應用程式

如需詳細資訊,請參閱 ODBC 驅動程式的版本資訊系統需求