SQL Server のパッケージのリモート管理を有効または無効にする
適用対象: SQL Server 2016 (13.x) SQL Server 2017 (14.x)
重要
2022 年 7 月 1 日に、Machine Learning Server (以前の Microsoft R Server) のサポートは終了しました。 詳細については、Machine Learning Server の現状に関するページを参照してください。
この記事では、クライアント ワークステーションまたは別の Machine Learning Server から R パッケージのリモート管理を有効にする方法について説明します。 SQL Server でパッケージ管理機能が有効になったら、クライアントで RevoScaleR コマンドを使用して SQL Server にパッケージをインストールできます。
既定では、SQL Server の外部パッケージ管理機能は無効になっています。 次のセクションで説明するように、別のスクリプトを実行してこの機能を有効にする必要があります。
プロセスとツールの概要
SQL Server でパッケージ管理を有効または無効にするには、コマンドライン ユーティリティ RegisterRExt.exe を使用します。これは、RevoScaleR パッケージに含まれています。
この機能を有効にするには、データベース管理者が 2 段階のプロセスを実行する必要があります。まず、SQL Server インスタンスでパッケージ管理を有効にし (SQL Server インスタンスごとに 1 回)、次に SQL データベースでパッケージ管理を有効にします (SQL Server データベースごとに 1 回)。
パッケージ管理機能を無効にする場合も、複数の手順が必要です。まず、データベースレベルのパッケージとアクセス許可を削除し (データベースごとに 1 回)、次にサーバーからロールを削除します (インスタンスごとに 1 回)。
パッケージ管理を有効にする
SQL Server で、管理者特権でコマンド プロンプトを開き、RegisterRExt.exe ユーティリティが格納されているフォルダーに移動します。 既定の場所は
<SQLInstancePath>\R_SERVICES\library\RevoScaleR\rxLibs\x64\RegisterRExe.exe
です。次のコマンドを実行して、環境に適した引数を指定します。
RegisterRExt.exe /install pkgmgmt [/instance:name] [/user:username] [/password:*|password]
このコマンドにより、パッケージ管理に必要なインスタンスレベルのオブジェクトが SQL Server コンピューターに作成されます。 また、インスタンスの Launchpad の再起動も行われます。
インスタンスを指定しない場合は、既定のインスタンスが使用されます。 ユーザーを指定しない場合は、現在のセキュリティ コンテキストが使用されます。 たとえば、次のコマンドにより、コマンド プロンプトを開いたユーザーの資格情報を使用して、既定のインスタンスのパッケージ管理が有効になります。
REgisterRExt.exe /install pkgmgmt
特定のデータベースにパッケージ管理を追加するには、管理者特権のコマンド プロンプトから次のコマンドを実行します。
RegisterRExt.exe /install pkgmgmt /database:databasename [/instance:name] [/user:username] [/password:*|password]
このコマンドにより、ユーザーのアクセス許可を制御するために使用されるデータベース ロール (
rpkgs-users
、rpkgs-private
、rpkgs-shared
など) を含む、いくつかのデータベース成果物が作成されます。たとえば、次のコマンドにより、既定のインスタンスで、データベースのパッケージ管理が有効になります。 ユーザーを指定しない場合は、現在のセキュリティ コンテキストが使用されます。
RegisterRExt.exe /install pkgmgmt /database:TestDB
パッケージをインストールする必要があるデータベースごとに、このコマンドを繰り返します。
新しいロールが正常に作成されたことを確認するには、SQL Server Management Studio でデータベースをクリックし、 [セキュリティ] 、 [データベース ロール] の順に展開します。
sys.database_principals に対して、次のようにクエリを実行することもできます。
SELECT pr.principal_id, pr.name, pr.type_desc, pr.authentication_type_desc, pe.state_desc, pe.permission_name, s.name + '.' + o.name AS ObjectName FROM sys.database_principals AS pr JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id JOIN sys.objects AS o ON pe.major_id = o.object_id JOIN sys.schemas AS s ON o.schema_id = s.schema_id;
この機能を有効にしたら、リモートの R クライアントから RevoScaleR 関数を使用して、パッケージをインストールまたはアンインストールすることができます。
パッケージ管理を無効にする
管理者特権のコマンド プロンプトから、RegisterRExt ユーティリティを再度実行して、データベース レベルでパッケージ管理を無効にします。
RegisterRExt.exe /uninstall pkgmgmt /database:databasename [/instance:name] [/user:username] [/password:*|password]
このコマンドにより、指定したデータベースからパッケージ管理に関連するデータベース オブジェクトが削除されます。 また、このコマンドにより、SQL Server コンピューター上の保護ファイル システムの場所からインストールされたすべてのパッケージも削除されます。
このコマンドは、パッケージ管理が使用されていたデータベースごとに繰り返す必要があります。
(省略可能) 前の手順ですべてのデータベースからパッケージを削除したら、管理者特権のコマンド プロンプトから次のコマンドを実行します。
RegisterRExt.exe /uninstall pkgmgmt [/instance:name] [/user:username] [/password:*|password]
このコマンドにより、インスタンスからパッケージ管理機能が削除されます。 変更を確認するには、Launchpad サービスを手動でもう一度再起動する必要がある場合があります。