安装 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。 从版本 18.4 开始,要在安装非 Alpine Linux(.deb 或 .rpm)驱动程序时自动接受 EULA,可以创建文件“/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

注意

必须有驱动程序版本 17.5 或更高版本,才能获得 Alpine 支持。

以前的版本

以下部分提供了有关在 Linux 上安装以前版本的的 Microsoft ODBC 驱动程序的说明。 涵盖以下驱动程序版本:

Microsoft ODBC 17

以下部分介绍了如何从用于不同 Linux 分发版本的 bash shell 安装 Microsoft ODBC 驱动程序 17。

重要

如果安装了暂时可用的 v17 msodbcsql 包,应先删除它,再安装 msodbcsql17 包。 这样可避免冲突。 msodbcsql17 包可以与 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

注意

必须有驱动程序版本 17.5 或更高版本,才能获得 Alpine 支持。

ODBC 13.1

以下部分介绍了如何从用于不同 Linux 分发版本的 bash shell 安装 Microsoft ODBC 驱动程序 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 驱动程序 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

脱机安装

如果需要在未连接 Internet 的计算机上安装 Microsoft ODBC 驱动程序 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

所有这些包都具有自己的依赖项,这些依赖项可能会显示在系统上,也可能不会显示。 有关此问题的常规解决方案,请查看发行版对应的包管理器文档:Red HatUbuntuSUSE

还有一种常见做法是,手动下载所有相关包并将其一起放置在安装计算机上,然后依次手动安装每个包,最后安装 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 驱动程序 11。 安装 unixODBC 驱动程序管理器后才能开始使用该驱动程序。 有关详细信息,请参阅安装驱动程序管理器

安装步骤

重要

这些说明参考了 Red Hat Linux 的安装文件 msodbcsql-11.0.2270.0.tar.gz。 如果要安装适用于 SUSE Linux 的预览版,则文件名为 msodbcsql-11.0.2260.0.tar.gz

若要安装该驱动程序:

  1. 请确保具有根权限。

  2. 转到下载放置文件 msodbcsql-11.0.2270.0.tar.gz 的目录。 确保所拥有的 *.tar.gz 文件与你的 Linux 版本匹配。 若要提取文件,请执行以下命令: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 告的输出会报计算机中是否具有在 Linux 上支持 ODBC 驱动程序所需的软件。

  7. 当你准备好在 Linux 上安装 ODBC 驱动程序时,请执行命令:./install.sh install。 如果需要指定安装命令(bin-dirlib-dir),请在“安装”选项后指定该命令 。

  8. 查看许可协议之后,键入 YES 以继续安装。

安装会将驱动程序放在 /opt/microsoft/msodbcsql/11.0.2270.0 中。 驱动程序及其支持文件必须位于 /opt/microsoft/msodbcsql/11.0.2270.0 中。

若要验证 Linux 上的 Microsoft ODBC 驱动程序是否已成功注册,请执行以下命令:odbcinst -q -d -n "ODBC Driver 11 for SQL Server"

卸载

通过执行以下命令,可以卸载 Linux 上的 ODBC 驱动程序 11:

  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) 动态库文件。 此文件安装在 ODBC Driver 17 的 /opt/microsoft/msodbcsql17/lib64/ 中和 ODBC Driver 13 的 /opt/microsoft/msodbcsql/lib64/ 中。
msodbcsqlr17.rllmsodbcsqlr13.rll 驱动程序库的附带资源文件。 此文件安装在 [driver .so directory]../share/resources/en_US/
msodbcsql.h 头文件,它包含使用驱动程序所需的所有新定义。

注意:无法在同一个程序中引用 msodbcsql.h 和 odbcss.h。

msodbcsql.h 安装在 ODBC Driver 17 的 /opt/microsoft/msodbcsql17/include/ 中和 ODBC Driver 13 的 /opt/microsoft/msodbcsql/include/ 中。
LICENSE.txt 包含最终用户许可协议条款的文本文件。 此文件位于 ODBC Driver 17 的 /usr/share/doc/msodbcsql17/ 中和 ODBC Driver 13 的 /usr/share/doc/msodbcsql/ 中。
RELEASE_NOTES 包含发行说明的文本文件。 此文件位于 ODBC Driver 17 的 /usr/share/doc/msodbcsql17/ 中和 ODBC 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 的连接,请参阅解决连接问题上的“已知问题”一文。