首页 > 解决方案 > SQL Server 机器学习服务 - 无法启动运行时。ErrorCode 0x80070032: 50(不支持该请求。)

问题描述

尝试在 SQL Server 2017 上配置 MLS,但在运行非常基本的外部脚本时,如下所示:

EXEC sp_execute_external_script  @language =N'R',
@script=N'OutputDataSet <- InputDataSet;',
@input_data_1 =N'SELECT 1 AS hello'
WITH RESULT SETS (([hello] int not null));
GO

我收到此错误:

消息 39021,级别 16,状态 1,第 1 行无法启动“R”脚本的运行时。请检查“R”运行时的配置。消息 39019,级别 16,状态 2,第 1 行发生外部脚本错误:无法启动运行时。错误代码 0x80070032:50(不支持该请求。)。

如果我查看日志 EXTLAUNCHERRORLOG,我会看到:

2020-12-29 17:53:49.554 SetCpuRateCap 失败,错误代码为 0x80070032。

我在任何地方都找不到对这个错误的引用,我很困惑。尝试了各种方法(检查权限、关闭资源管理器、更新到最新的 CU、重新安装 MLS 等)。我们有一个类似的服务器在相同的 Azure 平台上运行(相同的大小,W2012R2,相同的内存/cpu 配置),配置大致相同,似乎没有这个问题。R 和 Python 服务都会发生这种情况。

任何帮助,将不胜感激。

标签: sql-serversql-server-2017microsoft-rmicrosoft-machine-learning-server

解决方案


我有一个我们今天使用的解决方案,从 R 3.3.3 和 python 3.5.2 更改为 R 3.5.2 和 Python 3.7.1。

SQL 2017 CU22 安装了更高的 R&Python 版本,所以你必须运行一个 exe 来告诉 SQL 使用安装在磁盘上的更高版本的 R&Python。

对我们有用的修复:

(1) 创建一个新目录,例如D:\MLSTEMP

(2) 创建子目录D:\MLSTEMP\ < SQL_instance >00D:\MLSTEMP\ < SQL_instance >01

(3) 确保本地 MSSQLLaunchpad 服务、Everyone 组和 SQL 服务帐户对 D:\MLSTEMP 和子目录具有完全访问权限。

注意:< > 括号不是目录名称的一部分

注意:启动板服务名称为:NTService\MSSQLLaunchpad$ < instance_name >

(4) 去你的

D:\Program Files\Microsoft SQL Server\MSSQL14.SQL001\MSSQL\Binn\pythonlauncher.config

D:\Program Files\Microsoft SQL Server\MSSQL14.SQL001\MSSQL\Binn\rlauncher.config
文件并将每个文件中的 WORKING_DIRECTORY 设置更改为 WORKING_DIRECTORY=D:\MLSTEMP

(5)重启盒子上的MSSQLLaunchpad服务。

有趣的是,****01 目录是使用的目录,而不是 ****00 目录。

它现在应该可以工作了。您可能需要使用一些权限。

HTH。


推荐阅读