Microsoft ODBC Driver forSQL Serverをインストールする (Linux)

この記事では、Microsoft ODBC Driver forSQL Serverを Linux にインストール方法について説明します。 また、SQL Server 用のオプションのコマンドライン ツール (bcp および sqlcmd) と、unixODBC 開発ヘッダーについても説明します。

この記事では、Bash シェルから ODBC ドライバーをインストールするためのコマンドについて説明します。 パッケージを直接ダウンロードする場合は、「ODBC Driver forSQL Serverのダウンロード」を参照してください。

Microsoft ODBC 18

以下のセクションでは、さまざまな Linux ディストリビューション用の Bash シェルから 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

注意

Alpine のサポートには、ドライバー バージョン 17.5 以降が必要です。

以前のバージョン

以下のセクションでは、以前のバージョンの Microsoft ODBC Driverを Linux にインストールする手順について説明します。 次のバージョンのドライバーが対象です。

Microsoft ODBC 17

以下のセクションでは、さまざまな Linux ディストリビューション用の Bash シェルから Microsoft ODBC Driver 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

注意

Alpine のサポートには、ドライバー バージョン 17.5 以降が必要です。

ODBC 13.1

以下のセクションでは、さまざまな Linux ディストリビューション用の Bash シェルから 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 シェルから 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

これらの各パッケージにはそれぞれ独自の依存関係があり、システムに存在する場合と存在しない場合があります。 この問題の一般的な解決策については、ディストリビューションのパッケージ マネージャーの Red HatUbuntu、および SUSE に関するドキュメントを参照してください。

また、すべての従属パッケージを手動でダウンロードし、インストール コンピューターにまとめて配置してから、各パッケージを順に手動でインストールし、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

次のセクションでは、Microsoft ODBC Driver 11を Linux にインストールする方法について説明します。 ドライバーを使用する前に、unixODBC ドライバー マネージャーをインストールしておく必要があります。 詳細については、「ドライバー マネージャーのインストール」を参照してください。

インストール手順

重要

次の手順では、Red Hat Linux 用のインストール ファイル msodbcsql-11.0.2270.0.tar.gzを参照しています。 Preview for 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を実行します。 LinuxでODBC ドライバーをサポートするためにコンピューターに必要なソフトウェアがある場合、./install.sh verify の出力でレポートされます。

  7. Linux に ODBC ドライバーをインストールする準備が整ったら、コマンド ./install.sh installを実行します。 インストール コマンド (bin-dir またはlib-dir)を指定する必要がある場合は、install オプションの後にコマンドを指定してください。

  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) ダイナミック ライブラリ ファイル。 このファイルは、Driver 17 では /opt/microsoft/msodbcsql17/lib64/、Driver 13 では /opt/microsoft/msodbcsql/lib64/ にインストールされます。
msodbcsqlr17.rll またはmsodbcsqlr13.rll ドライバー ライブラリに付随するリソース ファイル。 このファイルは [driver .so directory]../share/resources/en_US/ にインストールされます
msodbcsql.h ドライバーを使用するために必要な新しい定義がすべて含まれているヘッダー ファイル。

注: msodbcsql.h と odbcss.hを同じプログラムで参照することはできません。

msodbcsql.h は、Driver 17 では /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.rll またはmsodbcsqlr13.rll という名前になります。 .rll ファイルの場所は、前のテーブルに示されているとおり、ドライバー自体の場所 (so またはdylib)を基準にして相対的です。 バージョン 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.ini ファイルの場所は、odbcinst -j コマンドを使って見つけることができます。

ODBC ドライバーを使用してSQL Serverに接続できない場合は、既知の問題に関する記事の「接続の問題のトラブルシューティング」を参照してください。