启用或禁用 SQL Server 的远程包管理
适用于: SQL Server 2016 (13.x) SQL Server 2017 (14.x)
重要
2022 年 7 月 1 日终止对 Machine Learning Server(以前称为 R Server)的支持。 有关详细信息,请参阅 Machine Learning Server 将发生什么情况?
本文介绍如何从客户端工作站或其他 Machine Learning Server 启用 R 包的远程管理。 在 SQL Server 上启用包管理功能后,可以在客户端上使用 RevoScaleR 命令在 SQL Server 上安装包。
默认情况下,将禁用 SQL Server 的外部包管理功能。 若要启用此功能,必须运行一个单独的脚本,如下节所述。
过程和工具概述
若要在 SQL Server 上启用或禁用包管理,请使用命令行实用程序 RegisterRExt.exe ,它包含在 RevoScaleR 包中。
启用此功能的过程分为两个步骤,需要数据管理员:在 SQL Server 实例上启用包管理(每个 SQL Server 实例一次),然后在 SQL 数据库上启用包管理(每个 SQL Server 数据库一次)。
禁用包管理功能也需要多个步骤:删除数据库级的包和权限(每个数据库一次),然后从服务器删除角色(每个实例一次)。
启用包管理
在 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 计算机上创建实例级的对象。 它还会重新启动实例的启动板。
如果未指定实例,将使用默认实例。 如果未指定用户,则使用当前安全上下文。 例如,以下命令使用打开命令提示符的用户的凭据,在默认实例上启用包管理:
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;
启用此功能后,可以使用 RevoScaleR 函数从远程 R 客户端安装或卸载包。
禁用包管理
在提升的命令提示符下,再次运行 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]
此命令从实例中删除包管理功能。 可能需要再次手动重新启动启动板服务以查看更改。