Windows に SQL Server 2022 Machine Learning Services (Python と R) をインストールする

適用対象: SQL Server 2022 (16.x)

この記事では、Windows に SQL Server 2022 Machine Learning Services をインストールする方法について説明します。 Machine Learning Services を使用して、データベース内で Python および R スクリプトを実行できます。

注意

これらの手順は、Windows の SQL Server 2022 (16.x) に固有です。 SQL Server 2016 (13.x)、SQL Server 2017 (14.x)、または SQL Server 2019 (15.x) 用に SQL Server Machine Learning Services を Windows にインストールするには、「Windows に SQL Server Machine Learning Services (Python と R) をインストールする」を参照してください。

Linux の場合は、「Linux に SQL Server Machine Learning Services (Python と R) をインストールする」を参照してください。

インストール前のチェックリスト

  • データベース エンジンのインスタンスが必要です。 Python または R の機能だけをインストールすることはできませんが、既存のインスタンスにそれらを段階的に追加することはできます。

  • 事業継続のために、Machine Learning Services では Always On 可用性グループがサポートされています。 各ノードに Machine Learning Services をインストールし、パッケージを構成します。

  • Machine Learning Services のインストールは、SQL Server 2019 以降の Always On フェールオーバー クラスター インスタンスでもサポートされています。

  • Machine Learning Services をドメイン コントローラーにインストールしないでください。 セットアップの Machine Learning Services の部分が失敗します。

  • 他のバージョンの Python および R とのサイドバイサイド インストールはサポートされていますが、お勧めしません。 これがサポートされているのは、SQL Server インスタンスでは、オープンソースの R および Anaconda ディストリビューションの独自のコピーが使用されるからです。 お勧めしないのは、SQL Server 外のコンピューター上で Python および R を使用するコードを実行すると、問題が発生する可能性があるためです。

    • 別のライブラリと別の実行可能ファイルを使用すると、SQL Server で実行している機能とは矛盾する結果が作成されます。
    • SQL Server では、外部ライブラリで実行されている R および Python スクリプトを管理できないため、リソースの競合が発生します。

重要

セットアップが完了したら、この記事で説明されている構成後の手順を必ず完了してください。 この手順には、SQL Server で外部スクリプトを使用できるようにする作業が含まれる場合があります。 通常、構成を変更するには、インスタンスを再起動するか、Launchpad サービスを再起動する必要があります。

インストール メディアを入手する

SQL Server のダウンロード場所は、エディションによって異なります。

  • SQL Server Enterprise、Standard、Express の各エディション。 これらのエディションには、運用環境で使用するためのライセンスが付与されます。 Enterprise および Standard エディションのインストール メディアについては、ソフトウェア販売元に問い合わせてください。 購入に関する情報および Microsoft パートナーのディレクトリについては、 マイクロソフトの購入 Web サイトをご覧ください。
  • 最新の無償版

セットアップを実行する

ローカルでのインストールの場合、管理者としてセットアップを実行する必要があります。 SQL Server をリモート共有からインストールする場合は、そのリモート共有に対する読み取り権限と実行権限を持つドメイン アカウントを使用する必要があります。

セットアップ中にインストール エラーが発生した場合は、セットアップ ブートストラップ ログ フォルダーの概要ログ (たとえば、%ProgramFiles%\Microsoft SQL Server\160\Setup Bootstrap\Log\Summary.txt) を確認します。

  1. SQL Server 2022 セットアップ ウィザードを起動します。

  2. [インストール] タブで、 [SQL Server の新規スタンドアロン インストールを実行するか、既存のインストールに機能を追加します] を選択します。

  3. [機能の選択] ページで、次のオプションを選択します。

    • データベース エンジン サービス

      SQL Server で R または Python を使用するには、データベース エンジンのインスタンスをインストールする必要があります。 既定のインスタンスまたは名前付きインスタンスを使用できます。

    • Machine Learning Services および言語

      このオプションを選択すると、R および Python スクリプトの実行をサポートするデータベース サービスがインストールされます。

    このスクリーンショットは、SQL Server 2022 (16.x) Machine Learning Services をインストールするときに確認する最小限のインスタンス機能を示しています。

    [データベース エンジン サービス] と [Machine Learning Services および言語の拡張] の隣のチェック ボックスがオンになっている機能選択のスクリーンショット。

ランタイムとパッケージをインストールする

SQL Server 2022 (16.x) 以降、R、Python、Java のランタイムは、SQL Server セットアップで出荷またはインストールされなくなりました。 代わりに、以降のセクションを参照してカスタム ランタイムとパッケージをインストールします。

R セットアップのサポート

R ランタイムのインストール

  1. 最新バージョンの R 4.2 for Windows をダウンロードしてインストールします。

  2. CompatibilityAPIRevoScaleR の依存関係をインストールします。 インストールしたバージョンの R ターミナルから、次のコマンドを実行します。

    # R Terminal
    install.packages("iterators")
    install.packages("foreach")
    install.packages("R6")
    install.packages("jsonlite")
    
  3. 最新バージョンの CompatibilityAPI および RevoScaleR パッケージをダウンロードしてインストールします。

    install.packages("https://aka.ms/sqlml/r4.2/windows/CompatibilityAPI_1.1.0.zip", repos=NULL)
    
    install.packages("https://aka.ms/sqlml/r4.2/windows/RevoScaleR_10.0.1.zip", repos=NULL)
    

SQL Server を使用して R ランタイムを構成する

  1. SQL Server を使用して、インストールされている R ランタイムを構成します。 既定のバージョンを変更するには、RegisterRext.exe コマンドライン ユーティリティを使用します。 このユーティリティは、インストールに応じて異なる R アプリケーション フォルダー内にあり、 通常は %ProgramFiles%\R\R-4.2.3\library\RevoScaleR\rxLibs\x64 内にあります。

    次のスクリプトを使用して、RegisterRext.exe のインストール フォルダーの場所からインストールされた R ランタイムを構成できます。 インスタンス名は、SQL Server の既定のインスタンスの場合は MSSQLSERVER、または SQL Server の名前付きインスタンスのインスタンス名です。

    .\RegisterRext.exe /configure /rhome:"%ProgramFiles%\R\R-4.2.3" /instance:"MSSQLSERVER"
    

    通常は 「.\SQLEXPRESS」 または 「MACHINENAME\SQLEXPRESS」 と呼ばれる SQL Server の名前付きインスタンスを構成する場合は、インスタンス名のみを含めます。 次に例を示します。

    .\RegisterRext.exe /configure /rhome:"%ProgramFiles%\R\R-4.2.3" /instance:"SQLEXPRESS"
    
  2. SQL Server Management Studio (SSMS) または Azure Data Studio を使用して、SQL Server Machine Learning Services をインストールしたインスタンスに接続します。 [新しいクエリ] を選択してクエリ ウィンドウを開き、次のコマンドを実行して外部スクリプト機能を有効にします。

    EXEC sp_configure  'external scripts enabled', 1;
    RECONFIGURE WITH OVERRIDE
    

    別の言語の機能を既に有効にしている場合は、R で 2 回目の RECONFIGUREを実行する必要はありません。基になる拡張性プラットフォームで両方の言語がサポートされます。 確認するには、次のコマンドから config_valuerun_value1 が返されることを確認します。

    EXEC sp_configure  'external scripts enabled';
    
  3. SQL Server サービスを再起動します。 サービスを再起動すると、関連する SQL Server Launchpad サービスも自動的に再起動されます。

    サービスを再起動するには、SSMS オブジェクト エクスプローラーでインスタンスの [再起動] コマンドを右クリックするか、コントロール パネルの [サービス] 項目または SQL Server 構成マネージャーを使用します。

  4. R のバージョンを返す単純な T-SQL コマンドを実行してインストールを確認します。

    EXEC sp_execute_external_script @script=N'print(R.version)',@language=N'R';
    GO
    

Python サポートを設定する

Python ランタイムをインストールする

  1. Python 3.10 for Windowsの最新バージョンをダウンロードします。 次のオプションを使用してインストールします。

    1. Python セットアップ アプリケーションを開き、[インストールをカスタマイズする] を選択します。

    2. [すべてのユーザーに対して起動ツールをインストールする (推奨)] がオンになっていることを確認します。

    3. [オプション機能] で、必要な機能を選択します (またはすべてを選択します)。

    4. [詳細オプション] ページで、[すべてのユーザーに対してインストールする] を選択し、他のオプションを既定値のままにし、[インストール] を選択します。

      1 人のユーザー固有のものではなく、すべてのユーザーがアクセスできる Python インストール パス (たとえば、C:\Program Files\Python310) を使用することをお勧めします。

  2. 新しい管理者特権でのコマンド プロンプトから、最新バージョンの revoscalepy パッケージとその依存関係をダウンロードしてインストールします。

    cd "C:\Program Files\Python310\"
    python -m pip install -t "C:\Program Files\Python310\Lib\site-packages" dill numpy==1.22.0 pandas patsy python-dateutil
    python -m pip install -t "C:\Program Files\Python310\Lib\site-packages" https://aka.ms/sqlml/python3.10/windows/revoscalepy-10.0.1-py3-none-any.whl
    

    次の icacls コマンドを実行して、インストールされているライブラリに対する読み取り実行のアクセス権を SQL Server Launchpad Service と SID S-1-15-2-1 (ALL_APPLICATION_PACKAGES) に付与します。 SQL Server 構成マネージャーにチェック、Launchpad サービスに関連付けられているサービス アカウントにアクセス許可を付与する必要があります。

    icacls "C:\Program Files\Python310\Lib\site-packages" /grant "NT Service\MSSQLLAUNCHPAD":(OI)(CI)RX /T
    icacls "C:\Program Files\Python310\Lib\site-packages" /grant *S-1-15-2-1:(OI)(CI)RX /T
    

    SQL Server を名前付きインスタンスとしてインストールした場合、サービス アカウントの中央に次のように $ が含まれる場合があります。

    icacls "C:\Program Files\Python310\Lib\site-packages" /grant "NT Service\MSSQLLAUNCHPAD$SQLEXPRESS":(OI)(CI)RX /T
    icacls "C:\Program Files\Python310\Lib\site-packages" /grant *S-1-15-2-1:(OI)(CI)RX /T
    

SQL Server を使用して Python ランタイムを構成する

  1. SQL Server を使用して、インストールされている Python ランタイムを構成します。 既定のバージョンを変更するには、RegisterRext.exe コマンドライン ユーティリティを使用します。 ユーティリティは、カスタム インストールの場所 (例: C:\Program Files\Python310\Lib\site-packages\revoscalepy\rxLibs) にあります。

    管理者特権でのコマンド プロンプトから、次のスクリプトを使用して、RegisterRext.exe のインストール フォルダーの場所からインストールされた Python ランタイムを構成できます。 インスタンス名は、SQL Server の既定のインスタンスの場合は MSSQLSERVER、または SQL Server の名前付きインスタンスのインスタンス名です。

    cd "C:\Program Files\Python310\Lib\site-packages\revoscalepy\rxLibs"
    .\RegisterRext.exe /configure /pythonhome:"C:\Program Files\Python310" /instance:"MSSQLSERVER"
    

    通常は 「.\SQLEXPRESS」 または 「MACHINENAME\SQLEXPRESS」 と呼ばれる SQL Server の名前付きインスタンスを構成する場合は、インスタンス名のみを含めます。 次に例を示します。

    cd "C:\Program Files\Python310\Lib\site-packages\revoscalepy\rxLibs"
    .\RegisterRext.exe /configure /pythonhome:"C:\Program Files\Python310" /instance:"SQLEXPRESS"
    
  2. SQL Server Management Studio または Azure Data Studio を使用して、SQL Server Machine Learning Services をインストールしたインスタンスに接続します。 [新しいクエリ] を選択してクエリ ウィンドウを開き、次のコマンドを実行して外部スクリプト機能を有効にします。

    EXEC sp_configure  'external scripts enabled', 1;
    RECONFIGURE WITH OVERRIDE
    

    別の言語の機能を既に有効にしている場合は、R で 2 回目の RECONFIGUREを実行する必要はありません。基になる拡張性プラットフォームで両方の言語がサポートされます。 確認するには、次のコマンドから config_valuerun_value1 が返されることを確認します。

    EXEC sp_configure  'external scripts enabled';
    
  3. SQL Server サービスを再起動します。 サービスを再起動すると、関連する SQL Server Launchpad サービスも自動的に再起動されます。

    サービスを再起動するには、SSMS オブジェクト エクスプローラーでインスタンスの [再起動] コマンドを右クリックするか、コントロール パネルの [サービス] 項目または SQL Server 構成マネージャーを使用します。

  4. Python のバージョンを返す単純な T-SQL コマンドを実行してインストールを確認します。

    EXEC sp_execute_external_script @script=N'import sys;print(sys.version)',@language=N'Python'
    GO
    

Java のインストール

Java のインストールと使用の詳細については、「Windows 上に SQL Server の Java 言語拡張をインストールする」を参照してください。

追加構成

外部スクリプトの検証手順が成功した場合は、SQL Server Management Studio、Visual Studio Code、または T-SQL ステートメントをサーバーに送信できる他の任意のクライアントから、R または Python コマンドを実行できます。

追加の構成が必要かどうかは、SQL Server をインストールしたセキュリティ スキーマと、ユーザーをどのようにデータベースに接続して外部スクリプトを実行させるかによって異なります。

コマンドを実行したときにエラーが発生した場合、サービスまたはデータベースに追加の構成を行うことが必要な場合があります。 インスタンス レベルでは、追加の構成に次のものが含まれます。

Windows の SQL Server 2019 以降では、分離メカニズムが変更されています。 このメカニズムは、SQLRUserGroup、ファイアウォール規則、ファイルのアクセス許可、および暗黙の認証に影響します。 詳細については、Machine Learning Services の分離の変更に関するページを参照してください。

データベースで構成の更新が必要になる場合があります。 詳細については、「SQL Server Machine Learning Services にユーザー アクセス許可を付与する」を参照してください。

推奨される最適化

これですべてが機能するようになったので、機械学習をサポートするようにサーバーを最適化したり、事前トレーニング済みの機械学習モデルをインストールしたりすることもできます。

スクリプトの実行用にサーバーを最適化する

SQL Server セットアップの既定の設定は、さまざまな他のサービスおよびアプリケーションに対してサーバーのバランスを最適化することを目的としています。

既定の設定では、特にメモリを集中的に使用する操作では、機械学習のリソースが制限または調整されることがあります。

確実に機械学習ジョブの優先順位が適切に設定され、リソースが提供されるようにするには、SQL Server Resource Governor を使って外部リソース プールを構成することをお勧めします。 また、SQL Server データベース エンジンに割り当てられるメモリの量を変更したり、SQL Server Launchpad サービスで実行するアカウントの数を増やしたりすることもできます。

Standard Edition を使用していて、Resource Governor がない場合は、動的管理ビュー、SQL Server 拡張イベント、Windows イベント監視を使用してサーバー リソースを管理できます。

Python と R の追加パッケージをインストールする

SQL Server 用に作成する Python および R ソリューションでは、次のものを呼び出すことができます。

  • 基本関数。
  • SQL Server と共にインストールされた専用パッケージの関数。
  • SQL Server によってインストールされたオープンソースの Python および R のバージョンと互換性のあるサードパーティ製のパッケージ。

SQL Server で使用するパッケージは、インスタンスで使用される既定のライブラリにインストールする必要があります。 コンピューター上に Python または R の別のインストールがある場合、またはパッケージをユーザー ライブラリにインストールした場合は、これらのパッケージが T-SQL から使用できなくなります。

追加のパッケージをインストールして管理するには、ユーザー グループを設定してデータベース レベルでパッケージを共有できます。 または、ユーザーが独自のパッケージをインストールできるようにデータベース ロールを構成することができます。 詳細については、Python パッケージのインストール新しい R パッケージのインストールに関するページを参照してください。

Python および R ランタイム用のスタンドアロン RevoScale パッケージ

RevoScale パッケージは、Python および R ランタイムを使用したスタンドアロン パッケージとしてもサポートされています。 スタンドアロン シナリオ用に Python または R ランタイムをセットアップするには、それぞれ「Python ランタイムのインストール」セクションと「R ランタイムのインストール」セクションの手順に従います。

Python 開発者は、次のチュートリアルに従って、SQL Server で Python を使用する方法を学習できます。

R 開発者はいくつかの簡単な例を試して、SQL Server での R の動作方法の基本を確認できます。 次の手順については、以下のリンクを参照してください。