Windows 上に SQL Server の .NET 言語拡張をインストールする
適用対象: SQL Server 2019 (15.x) 以降のバージョン
SQL Server の (C# で使用される) .NET 言語拡張コンポーネントを Windows にインストールする方法について説明します。 .NET 言語拡張は、SQL Server 言語拡張の一部です。
Note
この記事は、Windows への SQL Server の .NET 言語拡張のインストールに関するものです。 Linux はサポートされていません。
前提条件
Note
機能とインストール オプションは、SQL Server のバージョンによって異なります。 バージョン セレクターのドロップダウン リストを使用して適切なバージョンの SQL Server を選択します。
.NET 言語拡張のサポートをインストールする場合は、SQL Server セットアップが必要です。
.NET 言語拡張は .NET 6 以降のランタイムをサポートしており、Windows でのみサポートされます。
データベース エンジンのインスタンスが必要です。 .NET 言語拡張機能のみをインストールすることはできませんが、既存のインスタンスに段階的に追加することはできます。
ビジネス継続性のために、言語拡張では Always On 可用性グループがサポートされています。 各ノードに言語拡張をインストールし、パッケージを構成する必要があります。 また、.NET 言語拡張のインストールが、SQL Server のフェールオーバー クラスター インスタンスでサポートされています。
SQL Server 言語拡張機能または .NET 言語拡張機能をドメイン コントローラーにインストールしないでください。 セットアップの言語拡張部分が失敗します。
言語拡張と Machine Learning Services は、SQL Server ビッグ データ クラスターには既定でインストールされます。 ビッグ データ クラスターを使用する場合、この記事の手順を行う必要はありません。 詳細は、「SQL Server 2019 のビッグ データ クラスターで Machine Learning Services を使用して Python と R のスクリプトを実行する」を参照してください。
重要
セットアップが完了したら、この記事で説明されている構成後の手順を必ず完了してください。 これらの手順には、SQL Server で外部コードを使用できるようにすることや、ユーザーに代わって SQL Server が C# コードを実行するために必要なアカウントを追加することが含まれます。 通常、構成を変更するには、インスタンスを再起動するか、Launchpad サービスを再起動する必要があります。
.NET ランタイム
.NET 6 長期サポート (LTS) は、最も早くサポートされるランタイムです。 Windows 用 .NET ランタイムをダウンロードできます。 Linux はサポートされていません。
.NET ランタイムの最新の LTS リリースを使用する場合は、.NET 言語拡張を再コンパイルする必要があります。
インストール メディアを入手する
SQL Server のダウンロード場所は、エディションによって異なります。
SQL Server Enterprise、Standard、Express の各エディション。 これらのエディションには、運用環境で使用するためのライセンスが付与されます。 Enterprise および Standard エディションのインストール メディアについては、ソフトウェア販売元に問い合わせてください。 購入に関する情報および Microsoft パートナーのディレクトリについては、 マイクロソフトの購入 Web サイトをご覧ください。
セットアップの実行
ローカル インストールの場合は、セットアップを管理者として実行する必要があります。 SQL Server をリモート共有からインストールする場合は、そのリモート共有に対する読み取り権限と実行権限を持つドメイン アカウントを使用する必要があります。
SQL Server のセットアップ ウィザードを開始します。
[インストール] タブで、 [SQL Server の新規スタンドアロン インストールを実行するか、既存のインストールに機能を追加します] を選択します。
[機能の選択] ページで、次のオプションを選択します。
データベース エンジン サービス: SQL Server で言語拡張を使用するには、データベース エンジンのインスタンスをインストールする必要があります。 既定のインスタンスまたは名前付きインスタンスを使用できます。
Machine Learning Services と言語拡張機能: このオプションを選択すると、C# コードの実行をサポートする言語拡張機能コンポーネントがインストールされます。
[インストールの準備完了] ページで、以下が選択されていることを確認した後、 [インストール] を選択します。
- データベース エンジン サービス
- Machine Learning Services および言語の拡張
構成ファイルが格納されている
..\Setup Bootstrap\Log
パスの下にあるフォルダーの場所をメモしておきます。 セットアップが完了したら、インストールされたコンポーネントを概要ファイルで確認できます。セットアップが完了し、コンピューターの再起動を求めるメッセージが表示されたら、再起動してください。 セットアップが完了したら、インストール ウィザードからのメッセージを読むことが重要です。 詳細については、「 SQL Server セットアップ ログ ファイルの表示と読み取り」を参照してください。
言語拡張機能を登録する
次の手順に従って、C# コードの実行に使用される .NET 言語拡張機能をダウンロードして登録します。
SQL Server GitHub リポジトリの .NET 言語拡張機能から
dotnet-core-CSharp-lang-extension-windows-release.zip
ファイルをダウンロードします。 最新の Windowsdotnet-core-CSharp-lang-extension-windows-release.zip
ファイルをダウンロードします。 より新しい .NET ランタイムを使用する場合は、GitHub ソース コードからdotnet-core-CSharp-lang-extension
をコンパイルする必要があります。SQL Server Management Studio (SSMS) または Azure Data Studio を使用してお使いの SQL Server インスタンスに接続し、次の Transact-SQL (T-SQL) コマンドを実行して、CREATE EXTERNAL LANGUAGE で .NET 言語拡張機能を登録します。
このステートメントのパスを変更して、ダウンロードした言語拡張機能の zip ファイル (
dotnet-core-CSharp-lang-extension-windows-release.zip
) の場所を反映します。
CREATE EXTERNAL LANGUAGE [dotnet] FROM (CONTENT = N'C:\path\to\dotnet-core-CSharp-lang-extension-windows-release.zip', FILE_NAME = 'dotnetextension.dll'); GO
Launchpad を開始し直します。
[SQL Server 構成マネージャー] を開きます。
[SQL Server サービス] で [SQL Server スタート パッド] を右クリックして、 [再起動] を選択します。
サービスを再起動します。
インストールが完了したら、スクリプトの実行を有効にする次の手順に進む前に、データベース エンジンを再起動します。
サービスを再起動すると、関連する SQL Server Launchpad サービスも自動的に再起動されます。
サービスを再起動するには、SSMS でインスタンスを右クリックして [再起動] コマンドを使用するか、コントロール パネルの [サービス] パネルを使用するか、SQL Server 構成マネージャーを使用します。
スクリプトの実行を有効にする
SQL Server Management Studioを開きます。 言語拡張をインストールしたインスタンスに接続し、[新しいクエリ] を選択してクエリ ウィンドウを開き、次のコマンドを実行します。
EXEC sp_configure;
この機能は既定ではオフになっており (
value
は0
)、C# コードを実行する前に管理者が明示的に有効にする必要があります。外部スクリプト機能を有効にするには、次のステートメントを実行します。
EXEC sp_configure 'external scripts enabled', 1; GO RECONFIGURE WITH OVERRIDE
Machine Learning Services の機能をすでに有効にしている場合は、言語拡張機能に対して reconfigure を再度実行しないでください。 基になる拡張機能プラットフォームでは、両方がサポートされています。
外部言語を登録する
言語拡張を利用する各データベースには、CREATE EXTERNAL LANGUAGE を使って外部言語を登録する必要があります。
次の例では、Windows 上の SQL Server のデータベースに、dotnet
という名前の外部言語を追加します。
CREATE EXTERNAL LANGUAGE [dotnet]
FROM (CONTENT = N'<path-to-zip>', FILE_NAME = 'dotnetextension.dll');
GO
詳しくは、「CREATE EXTERNAL LANGUAGE」をご覧ください。
インストールの確認
セットアップ ログで、インスタンスのインストール状態を確認します。
次の手順に従って、外部スクリプトの起動に使用されるすべてのコンポーネントが実行されていることを確認します。
SQL Server Management Studio または Azure Data Studio で、新しいクエリ ウィンドウを開き、次のステートメントを実行します。
EXEC sp_configure 'external scripts enabled';
現在
run_value
は1
に設定されています。[サービス] パネルまたは SQL Server 構成マネージャーを開き、SQL Server Launchpad サービスが実行されていることを確認します。 言語拡張がインストールされているすべてのデータベース エンジンのインスタンスに対して、1 つのサービスが存在する必要があります。 サービスの詳細については、「SQL Server 言語拡張機能の拡張アーキテクチャ」を参照してください。
追加の設定
検証手順が成功した場合は、SQL Server Management Studio、Azure Data Studio、Visual Studio Code、または T-SQL ステートメントをサーバーに送信できる他の任意のクライアントから、C# コードを実行できます。
コマンドの実行中にエラーが発生した場合は、このセクションの追加の構成手順を確認してください。 サービスまたはデータベースに対して追加の適切な構成を行う必要がある場合があります。
インスタンス レベルでは、追加の構成には次のものが含まれる場合があります。
- SQL Server Machine Learning Services のファイアウォール構成
- サーバー ネットワーク プロトコルの有効化または無効化
- リモート アクセスの構成 (サーバー構成のオプション)
- SQLRUserGroup のログインを作成する
データベースでは、次の構成の更新が必要になる場合があります。
- SQL Server Machine Learning Services で Python スクリプトと R スクリプトを実行する権限をデータベース ユーザーに付与する
- 特定の言語を実行するためのアクセス許可をユーザーに付与する
注意
追加の構成が必要かどうかは、SQL Server をインストールしたセキュリティ スキーマと、ユーザーをどのようにデータベースに接続して外部スクリプトを実行させるかによって異なります。
推奨される最適化
すべてが機能するようになったので、.NET 言語拡張をサポートするようにサーバーを最適化することもできます。
.NET 言語拡張用にサーバーを最適化する
SQL Server セットアップの既定の設定は、抽出、変換、読み込み (ETL) プロセス、レポート、監査、SQL を使用するアプリケーションなど、データベース エンジンでサポートされるさまざまなサービスに対するサーバーのバランスを最適化することを目的としています。 サーバーデータ。 そのため、既定の設定では、場合によって言語拡張用のリソースが制限または調整されることがあります (特に、メモリを大量に使用する操作の場合)。
言語拡張ジョブが適切に優先順位を設定されて、リソースを提供されるようにするため、SQL Server Resource Governor を使って外部リソース プールを構成することをお勧めします。 データベース エンジンに割り当てられるメモリ量を変更したり、SQL Server Launchpad サービスで実行するアカウントの数を増やしたりすることもできます。
外部リソースを管理するためのリソース プールを構成するには、「CREATE EXTERNAL RESOURCE POOL (Transact-SQL)」を参照してください。
データベース用に予約されているメモリの量を変更するには、「サーバー メモリの構成オプション」を参照してください。
Standard エディションを使用しており、リソース ガバナーがない場合は、動的管理ビュー (DMV) と拡張イベント、および Windows イベント監視を使用して、サーバー リソースの管理を支援できます。
次のステップ
C# 開発者はいくつかの簡単な例を試して、SQL Server での C# の動作方法の基本を確認できます。 次の手順については、以下のリンクを参照してください。