SQL Server 用の Python カスタム ランタイムをインストールする
適用対象: SQL Server 2019 (15.x)
SQL Server で外部 Python スクリプトを実行するための Python カスタム ランタイムをインストールする方法について説明します。
- Windows
- Ubuntu Linux
- Red Hat Enterprise Linux (RHEL)
- SUSE Linux Enterprise Server (SLES)
カスタム ランタイムは、機械学習スクリプトを実行することができ、SQL Server 言語拡張機能を使用します。
SQL Server Machine Learning Services と共にインストールされる既定のランタイム バージョンではなく、独自のバージョンの Python ランタイムを SQL Server と共に使用します。
SQL Server 2022 (16.x) 以降、R、Python、Java のランタイムは SQL セットアップでインストールされなくなりました。 代わりに、ご自分のお好きな Python のカスタム ランタイムとパッケージをインストールしてください。 詳細については、Windows への SQL Server 2022 Machine Learning Services (Python と R) のインストールに関する説明、または「Linux に SQL Server Machine Learning Services (Python と R) をインストールする」を参照してください。
前提条件
Python カスタム ランタイムをインストールする前に、次のものをインストールします。
- 既存の SQL Server インスタンスを使用する場合は、SQL Server 2019 の累積的な更新プログラム (CU) 3 以降をインストールします。
言語拡張をインストールする
Note
SQL Server 2019 に Machine Learning Services がインストールされている場合は、言語拡張機能が既にインストールされているため、この手順は省略できます。
SQL Server 言語拡張機能 (Python カスタム ランタイムに使用されるもの) をインストールするには、次の手順に従います。
SQL Server 2019 のセットアップ ウィザードを開始します。
[インストール] タブで、 [SQL Server の新規スタンドアロン インストールを実行するか、既存のインストールに機能を追加します] を選択します。
[機能の選択] ページで、次のオプションを選択します。
データベース エンジン サービス
SQL Server で言語拡張を使用するには、データベース エンジンのインスタンスをインストールする必要があります。 新規または既存のインスタンスのいずれかを使用できます。
Machine Learning Services および言語の拡張
[Machine Learning Services および言語の拡張] を選択します。 後でカスタム Python ランタイムをインストールするので、Python は選択しないでください。
[インストールの準備完了] ページで、以下が選択されていることを確認した後、 [インストール] を選択します。
- データベース エンジン サービス
- Machine Learning Services および言語の拡張
セットアップが完了した後、確認のメッセージが表示されたらコンピューターを再起動します。
重要
言語拡張機能を使用して SQL Server 2019 の新規インスタンスをインストールする場合は、次の手順に進む前に、累積的な更新プログラム (CU) 3 以降をインストールしてください。
Python のインストール
カスタム Python ランタイムに使用される Python 言語拡張機能は、現在、Python 3.7 のみをサポートしています。 別のバージョンの Python を使用する場合は、Python 言語拡張機能の GitHub リポジトリの指示に従って、拡張機能を変更し、再構築してください。
Windows 用の Python 3.7 をダウンロードし、サーバーでセットアップを実行します。
[Add Python 3.7 to PATH](Python 3.7 を PATH に追加) を選択し、 [インストールをカスタマイズする] を選択します。
[オプション機能] は既定値をそのまま使用して、 [次へ] を選択します。
[すべてのユーザーに対してインストール] を選択し、インストールの場所を記録しておきます。
[インストール] を選択します。
pandas をインストールする
"管理者特権" でのコマンド プロンプトから (管理者として実行)、Python 用の pandas パッケージをインストールします。
python.exe -m pip install pandas
Python フォルダーへのアクセスを許可する
新しい "管理者特権" でのコマンド プロンプトから次の icacls コマンドを実行して、Python のインストール場所への 読み取りと実行のアクセス権を、SQL Server Launchpad サービスと SID S-1-15-2-1 (ALL_APPLICATION_PACKAGES) に付与します。
次の例では、Python のインストール場所として C:\Program Files\Python37
を使用します。 お使いの場所が異なる場合は、コマンドでそれを変更します。
SQL Server Launchpad サービスのユーザー名にアクセス許可を付与します。
icacls "C:\Program Files\Python37" /grant "NT Service\MSSQLLAUNCHPAD":(OI)(CI)RX /T
名前付きインスタンスの場合、SQL01 というインスタンスに対するコマンドは
icacls "C:\Program Files\Python37" /grant "NT Service\MSSQLLAUNCHPAD$SQL01":(OI)(CI)RX /T
になります。SID S-1-15-2-1 にアクセス許可を付与します。
icacls "C:\Program Files\Python37" /grant *S-1-15-2-1:(OI)(CI)RX /T
上記のコマンドを実行すると、コンピューター SID S-1-15-2-1 にアクセス許可が付与されます。これは、英語版の Windows における ALL APPLICATION PACKAGES と同等です。 または、英語版の Windows で
icacls "C:\Program Files\Python37" /grant "ALL APPLICATION PACKAGES":(OI)(CI)RX /T
を使用することもできます。
SQL Server Launchpad を再起動する
SQL Server Launchpad サービスを再起動するには、次の手順に従います。
[SQL Server 構成マネージャー] を開きます。
[SQL Server サービス] で [SQL Server Launchpad (MSSQLSERVER)] を右クリックして、[再起動] を選択します。 名前付きインスタンスを使用している場合は、 (MSSQLSERVER) の代わりにインスタンス名が表示されます。
言語拡張機能を登録する
Python 言語拡張機能 (Python カスタム ランタイムに使用されるもの) をダウンロードして登録するには、次の手順に従います。
SQL Server 言語拡張機能の GitHub リポジトリから python-lang-extension-windows-release.zip ファイルをダウンロードします。
開発環境やテスト環境では、デバッグ バージョン (python-lang-extension-windows-debug.zip) を使用することもできます。 デバッグ バージョンでは、エラーを調査するための詳細なログ情報が提供されます。これは運用環境では推奨されません。
Azure Data Studio を使用して SQL Server インスタンスに接続し、次の T-SQL コマンドを実行して、Python 言語拡張機能を CREATE EXTERNAL LANGUAGE に登録します。
このステートメントのパスを変更して、ダウンロードした言語拡張機能の zip ファイルの場所 (python-lang-extension-windows-release.zip) と Python インストールの場所 (
C:\\Program Files\\Python37
) を反映します。CREATE EXTERNAL LANGUAGE [myPython] FROM (CONTENT = N'C:\path\to\python-lang-extension-windows-release.zip', FILE_NAME = 'pythonextension.dll', ENVIRONMENT_VARIABLES = N'{"PYTHONHOME": "C:\\Program Files\\Python37"}'); GO
Python 言語拡張機能を使用するデータベースごとに、このステートメントを実行します。
Note
Python は予約語であり、新しい外部言語の名前として使用することはできません。 別の名前を使用してください。 たとえば、上記のステートメントでは myPython が使用されています。
前提条件
Python カスタム ランタイムをインストールする前に、次のものをインストールします。
Linux 用 SQL Server 2019 をインストールします。 SQL Server は、Red Hat Enterprise Linux (RHEL)、SUSE Linux Enterprise Server (SLES)、および Ubuntu にインストールできます。 詳細については、SQL Server on Linux のインストール ガイダンスを参照してください。
SQL Server 2019 の累積的な更新プログラム (CU) 3 以降にアップグレードします。 次の手順に従います。
累積的な更新プログラムのリポジトリを構成します。 詳細については、「SQL Server on Linux のインストールとアップグレードを行うためのリポジトリを構成する」を参照してください。
mssql-server パッケージを、最新の累積更新プログラムに更新します。 詳細については、「SQL Server on Linux のインストール ガイド」の「SQL Server の更新またはアップグレード」を参照してください。
言語拡張をインストールする
Note
SQL Server 2019 に Machine Learning Services がインストールされている場合は、言語拡張機能用の mssql-server-extensibility パッケージが既にインストールされているため、この手順は省略できます。
次のコマンドを実行して、Python カスタム ランタイムに使用される Ubuntu Linux に SQL Server 言語拡張機能をインストールします。
可能であれば、次のコマンドを実行して、インストールの前にシステム上のパッケージを更新しておきます。
# Install as root or sudo sudo apt-get update
Ubuntu には、https apt transport オプションがない可能性があります。 これをインストールするには、次のコマンドを実行します。
# Install as root or sudo apt-get install apt-transport-https
次のコマンドを使用して mssql-server-extensibility をインストールします。
# Install as root or sudo sudo apt-get install mssql-server-extensibility
Python 3.7 と pandas をインストールする
Python カスタム ランタイムに使用される Python 言語拡張機能では、現在、Python 3.7 のみがサポートされています。 別のバージョンの Python を使用する場合は、Python 言語拡張機能の GitHub リポジトリの指示に従って、拡張機能を変更し、再構築してください。
次のコマンドを実行して、Python 3.7 をインストールします。
# Install python3.7 and the corresponding library: sudo add-apt-repository ppa:deadsnakes/ppa sudo apt-get update sudo apt-get install python3.7 python3-pip libpython3.7
次のコマンドを実行して、pandas パッケージをインストールします。
# Install pandas to /usr/lib: sudo python3.7 -m pip install pandas -t /usr/lib/python3.7/dist-packages
Python のカスタム インストール
Note
/usr/lib/python3.7
の既定の場所に Python 3.7 がインストールされている場合は、このセクションをスキップし、「言語拡張機能を登録する」セクションに進むことができます。
独自のバージョンの Python 3.7 をビルドした場合は、次のコマンドを使用して、SQL Server にカスタム インストールを把握させます。
環境変数を追加する
まず、mssql-launchpadd サービスを編集して、PYTHONHOME 環境変数を /etc/systemd/system/mssql-launchpadd.service.d/override.conf
ファイルに追加します
systemctl を使用してファイルを開きます
sudo systemctl edit mssql-launchpadd
開かれた
/etc/systemd/system/mssql-launchpadd.service.d/override.conf
ファイルに、次のテキストを挿入します。 PYTHONHOME の値をカスタムの Python インストール パスに設定します。[Service] Environment="PYTHONHOME=<path to the python3.7 lib>"
ファイルを保存して、エディターを閉じます。
次に、libpython3.7m.so.1.0
を読み込めることを確認します。
/etc/ld.so.conf.d
内に custom-python.conf ファイルを作成します。sudo vi /etc/ld.so.conf.d/custom-python.conf
開かれたファイルに、カスタムの Python インストールから libpython3.7m.so.1.0 へのパスを追加します。
<path to the python3.7 lib>
新しいファイルを保存し、エディターを閉じます。
ldconfig
を実行し、次のコマンドを実行することでlibpython3.7m.so.1.0
を読み込めることを確認し、すべての依存ライブラリが見つかることを確認します。sudo ldconfig ldd <path to the python3.7 lib>/libpython3.7m.so.1.0
Python フォルダーへのアクセスを許可する
/var/opt/mssql/mssql.conf
ファイルの extensibility セクションにある datadirectories
オプションを、カスタム Python のインストールに設定します。
sudo /opt/mssql/bin/mssql-conf set extensibility.datadirectories <path to python3.7>
Mssql-launchpadd を再起動する
次のコマンドを実行して、mssql-launchpadd を再起動します。
sudo systemctl restart mssql-launchpadd
言語拡張機能を登録する
Python 言語拡張機能 (Python カスタム ランタイムに使用されるもの) をダウンロードして登録するには、次の手順に従います。
SQL Server 言語拡張機能の GitHub リポジトリから python-lang-extension-linux-release.zip ファイルをダウンロードします。
開発環境やテスト環境では、デバッグ バージョン (python-lang-extension-linux-debug.zip) を使用することもできます。 デバッグ バージョンでは、エラーを調査するための詳細なログ情報が提供されます。これは運用環境では推奨されません。
Azure Data Studio を使用して SQL Server インスタンスに接続し、次の T-SQL コマンドを実行して、Python 言語拡張機能を CREATE EXTERNAL LANGUAGE に登録します。
このステートメントのパスを変更して、ダウンロードした言語拡張機能の zip ファイル (python-lang-extension-linux-release.zip) の場所を反映します。
CREATE EXTERNAL LANGUAGE [myPython] FROM (CONTENT = N'/path/to/python-lang-extension-linux-release.zip', FILE_NAME = 'libPythonExtension.so.1.1'); GO
Python 言語拡張機能を使用するデータベースごとに、このステートメントを実行します。
Note
Python は予約語であり、新しい外部言語の名前として使用することはできません。 別の名前を使用してください。 たとえば、上記のステートメントでは myPython が使用されています。
前提条件
Python カスタム ランタイムをインストールする前に、次のものをインストールします。
Linux 用 SQL Server 2019 をインストールします。 SQL Server は、Red Hat Enterprise Linux (RHEL)、SUSE Linux Enterprise Server (SLES)、および Ubuntu にインストールできます。 詳細については、SQL Server on Linux のインストール ガイダンスを参照してください。
SQL Server 2019 の累積的な更新プログラム (CU) 3 以降にアップグレードします。 次の手順に従います。
累積的な更新プログラムのリポジトリを構成します。 詳細については、「SQL Server on Linux のインストールとアップグレードを行うためのリポジトリを構成する」を参照してください。
mssql-server パッケージを、最新の累積更新プログラムに更新します。 詳細については、「SQL Server on Linux のインストール ガイド」の「SQL Server の更新またはアップグレード」を参照してください。
言語拡張をインストールする
Note
SQL Server 2019 に Machine Learning Services がインストールされている場合は、言語拡張機能用の mssql-server-extensibility パッケージが既にインストールされているため、この手順は省略できます。
次のコマンドを実行して、Python カスタム ランタイムに使用される Red Hat Enterprise Linux (RHEL) に SQL Server 言語拡張機能をインストールします。
# Install as root or sudo
sudo yum install mssql-server-extensibility
Python 3.7 と pandas をインストールする
Python カスタム ランタイムに使用される Python 言語拡張機能では、現在、Python 3.7 のみがサポートされています。 別のバージョンの Python を使用する場合は、Python 言語拡張機能の GitHub リポジトリの指示に従って、拡張機能を変更し、再構築してください。
次のコマンドを実行して、Python 3.7 をインストールします。
# Install python3.7 and the corresponding library: yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel cd /usr/src wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz tar xzf Python-3.7.9.tgz cd Python-3.7.9 ./configure --enable-optimizations --prefix=/usr make altinstall
次のコマンドを実行して、pandas パッケージをインストールします。
# Install pandas to /usr/lib: sudo python3.7 -m pip install pandas -t /usr/lib/python3.7/dist-packages
Python のカスタム インストール
Note
/usr/lib/python3.7
の既定の場所に Python 3.7 がインストールされている場合は、このセクションをスキップし、「言語拡張機能を登録する」セクションに進むことができます。
独自のバージョンの Python 3.7 をビルドした場合は、次のコマンドを使用して、SQL Server にカスタム インストールを把握させます。
環境変数を追加する
まず、mssql-launchpadd サービスを編集して、PYTHONHOME 環境変数を /etc/systemd/system/mssql-launchpadd.service.d/override.conf
ファイルに追加します
systemctl を使用してファイルを開きます
sudo systemctl edit mssql-launchpadd
開かれた
/etc/systemd/system/mssql-launchpadd.service.d/override.conf
ファイルに、次のテキストを挿入します。 PYTHONHOME の値をカスタムの Python インストール パスに設定します。[Service] Environment="PYTHONHOME=<path to the python3.7 lib>"
ファイルを保存して、エディターを閉じます。
次に、libpython3.7m.so.1.0
を読み込めることを確認します。
/etc/ld.so.conf.d
内に custom-python.conf ファイルを作成します。sudo vi /etc/ld.so.conf.d/custom-python.conf
開かれたファイルに、カスタムの Python インストールから libpython3.7m.so.1.0 へのパスを追加します。
<path to the python3.7 lib>
新しいファイルを保存し、エディターを閉じます。
ldconfig
を実行し、次のコマンドを実行することでlibpython3.7m.so.1.0
を読み込めることを確認し、すべての依存ライブラリが見つかることを確認します。sudo ldconfig ldd <path to the python3.7 lib>/libpython3.7m.so.1.0
Python フォルダーへのアクセスを許可する
/var/opt/mssql/mssql.conf
ファイルの extensibility セクションにある datadirectories
オプションを、カスタム Python のインストールに設定します。
sudo /opt/mssql/bin/mssql-conf set extensibility.datadirectories <path to python3.7>
Mssql-launchpadd を再起動する
次のコマンドを実行して、mssql-launchpadd を再起動します。
sudo systemctl restart mssql-launchpadd
言語拡張機能を登録する
Python 言語拡張機能 (Python カスタム ランタイムに使用されるもの) をダウンロードして登録するには、次の手順に従います。
SQL Server 言語拡張機能の GitHub リポジトリから python-lang-extension-linux-release.zip ファイルをダウンロードします。
開発環境やテスト環境では、デバッグ バージョン (python-lang-extension-linux-debug.zip) を使用することもできます。 デバッグ バージョンでは、エラーを調査するための詳細なログ情報が提供されます。これは運用環境では推奨されません。
Azure Data Studio を使用して SQL Server インスタンスに接続し、次の T-SQL コマンドを実行して、Python 言語拡張機能を CREATE EXTERNAL LANGUAGE に登録します。
このステートメントのパスを変更して、ダウンロードした言語拡張機能の zip ファイル (python-lang-extension-linux-release.zip) の場所を反映します。
CREATE EXTERNAL LANGUAGE [myPython] FROM (CONTENT = N'/path/to/python-lang-extension-linux-release.zip', FILE_NAME = 'libPythonExtension.so.1.1'); GO
Python 言語拡張機能を使用するデータベースごとに、このステートメントを実行します。
Note
Python は予約語であり、新しい外部言語の名前として使用することはできません。 別の名前を使用してください。 たとえば、上記のステートメントでは myPython が使用されています。
前提条件
Python カスタム ランタイムをインストールする前に、次のものをインストールします。
Linux 用 SQL Server 2019 をインストールします。 SQL Server は、Red Hat Enterprise Linux (RHEL)、SUSE Linux Enterprise Server (SLES)、および Ubuntu にインストールできます。 詳細については、SQL Server on Linux のインストール ガイダンスを参照してください。
SQL Server 2019 の累積的な更新プログラム (CU) 3 以降にアップグレードします。 次の手順に従います。
累積的な更新プログラムのリポジトリを構成します。 詳細については、「SQL Server on Linux のインストールとアップグレードを行うためのリポジトリを構成する」を参照してください。
mssql-server パッケージを、最新の累積更新プログラムに更新します。 詳細については、「SQL Server on Linux のインストール ガイド」の「SQL Server の更新またはアップグレード」を参照してください。
言語拡張をインストールする
Note
SQL Server 2019 に Machine Learning Services がインストールされている場合は、言語拡張機能用の mssql-server-extensibility パッケージが既にインストールされているため、この手順は省略できます。
次のコマンドを実行して、Python カスタム ランタイムに使用される SUSE Linux Enterprise Server (SLES) に SQL Server 言語拡張機能をインストールします。
# Install as root or sudo
sudo zypper install mssql-server-extensibility
Python 3.7 と pandas をインストールする
Python カスタム ランタイムに使用される Python 言語拡張機能では、現在、Python 3.7 のみがサポートされています。 別のバージョンの Python を使用する場合は、Python 言語拡張機能の GitHub リポジトリの指示に従って、拡張機能を変更し、再構築してください。
Python 3.7 をサーバーにインストールします。
次のコマンドを実行して、pandas パッケージをインストールします。
# Install pandas to /usr/lib: sudo python3.7 -m pip install pandas -t /usr/lib/python3.7/dist-packages
Python のカスタム インストール
Note
/usr/lib/python3.7
の既定の場所に Python 3.7 がインストールされている場合は、このセクションをスキップし、「言語拡張機能を登録する」セクションに進むことができます。
独自のバージョンの Python 3.7 をビルドした場合は、次のコマンドを使用して、SQL Server にカスタム インストールを把握させます。
環境変数を追加する
まず、mssql-launchpadd サービスを編集して、PYTHONHOME 環境変数を /etc/systemd/system/mssql-launchpadd.service.d/override.conf
ファイルに追加します
systemctl を使用してファイルを開きます
sudo systemctl edit mssql-launchpadd
開かれた
/etc/systemd/system/mssql-launchpadd.service.d/override.conf
ファイルに、次のテキストを挿入します。 PYTHONHOME の値をカスタムの Python インストール パスに設定します。[Service] Environment="PYTHONHOME=<path to the python3.7 lib>"
ファイルを保存して、エディターを閉じます。
次に、libpython3.7m.so.1.0
を読み込めることを確認します。
/etc/ld.so.conf.d
内に custom-python.conf ファイルを作成します。sudo vi /etc/ld.so.conf.d/custom-python.conf
開かれたファイルに、カスタムの Python インストールから libpython3.7m.so.1.0 へのパスを追加します。
<path to the python3.7 lib>
新しいファイルを保存し、エディターを閉じます。
ldconfig
を実行し、次のコマンドを実行することでlibpython3.7m.so.1.0
を読み込めることを確認し、すべての依存ライブラリが見つかることを確認します。sudo ldconfig ldd <path to the python3.7 lib>/libpython3.7m.so.1.0
Python フォルダーへのアクセスを許可する
/var/opt/mssql/mssql.conf
ファイルの extensibility セクションにある datadirectories
オプションを、カスタム Python のインストールに設定します。
sudo /opt/mssql/bin/mssql-conf set extensibility.datadirectories <path to python3.7>
Mssql-launchpadd を再起動する
次のコマンドを実行して、mssql-launchpadd を再起動します。
sudo systemctl restart mssql-launchpadd
言語拡張機能を登録する
Python 言語拡張機能 (Python カスタム ランタイムに使用されるもの) をダウンロードして登録するには、次の手順に従います。
SQL Server 言語拡張機能の GitHub リポジトリから python-lang-extension-linux-release.zip ファイルをダウンロードします。
開発環境やテスト環境では、デバッグ バージョン (python-lang-extension-linux-debug.zip) を使用することもできます。 デバッグ バージョンでは、エラーを調査するための詳細なログ情報が提供されます。これは運用環境では推奨されません。
Azure Data Studio を使用して SQL Server インスタンスに接続し、次の T-SQL コマンドを実行して、Python 言語拡張機能を CREATE EXTERNAL LANGUAGE に登録します。
このステートメントのパスを変更して、ダウンロードした言語拡張機能の zip ファイル (python-lang-extension-linux-release.zip) の場所を反映します。
CREATE EXTERNAL LANGUAGE [myPython] FROM (CONTENT = N'/path/to/python-lang-extension-linux-release.zip', FILE_NAME = 'libPythonExtension.so.1.1'); GO
Python 言語拡張機能を使用するデータベースごとに、このステートメントを実行します。
Note
Python は予約語であり、新しい外部言語の名前として使用することはできません。 別の名前を使用してください。 たとえば、上記のステートメントでは myPython が使用されています。
外部スクリプトを有効にする
Python 外部スクリプトは、ストアド プロシージャ sp_execute_external_script を使用して実行できます。
外部スクリプトを有効にするには、Azure Data Studio を使用して次のステートメントを実行します。
sp_configure 'external scripts enabled', 1;
RECONFIGURE WITH OVERRIDE;
インストールの確認
Python カスタム ランタイムのインストールと機能を確認するには、次の SQL スクリプトを使用します。 下のサンプル スクリプトでは、myPython
が言語名として使用されています。既定の言語名 Python
はカスタム ランタイムとしては指定できないためです。
EXEC sp_execute_external_script
@language =N'myPython',
@script=N'
import sys
print(sys.path)
print(sys.version)
print(sys.executable)'