授予数据库用户在 SQL Server 机器学习服务中执行 Python 和 R 脚本的权限

适用于: SQL Server 2016 (13.x) 及更高版本 Azure SQL 托管实例

了解如何向数据库用户授予在 SQL Server 机器学习服务中运行外部 Python 和 R 脚本的权限,以及向数据库授予读取、写入或数据定义语言 (DDL) 权限。

有关详细信息,请参阅扩展框架安全性概述中的“权限”部分。

运行脚本的权限

对于每个在 SQL Server 机器学习服务中运行 Python 或 R 脚本的非管理员用户,必须授予他们在使用该语言的每个数据库中运行外部脚本的权限。

若要向数据库用户授予执行外部脚本的权限,请运行以下脚本:

USE <database_name>
GO
GRANT EXECUTE ANY EXTERNAL SCRIPT TO [UserName]

注意

权限不特定于受支持的脚本语言。 换句话说,R 脚本和 Python 脚本没有单独的权限级别。

授予数据库权限

当某个数据库用户运行脚本时,该数据库用户可能需要从其他数据库读取数据。 此外,该数据库用户可能还需要创建新表来存储结果,并将数据写入表中。

对于运行 R 或 Python 脚本的每个数据库用户帐户或 SQL 登录名,请确保它们具有特定数据库的适当权限:

  • db_datareader 用以读取数据。
  • db_datawriter 将对象保存到数据库。
  • db_ddladmin 用以创建对象,例如包含训练数据和序列化数据的存储过程或表。

例如,以下 Transact-SQL 语句为 SQL 登录名 MySQLLogin 提供在 ML_Samples 数据库中运行 T-SQL 查询的权限。 若要运行此语句,SQL 登录名必须已经存在于服务器的安全上下文中。 有关详细信息,请参阅 sp_addrolemember (Transact-SQL)

USE ML_Samples
GO
EXEC sp_addrolemember 'db_datareader', 'MySQLLogin'

后续步骤

若要详细了解每个角色包括的权限,请参阅 数据库级别的角色