尝试在 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 行 发生外部脚本错误: 无法启动运行时。 ErrorCode 0x80070032: 50(不支持该请求。)。
如果我查看日志 EXTLAUNCHERRORLOG 我会看到:
2020-12-29 17:53:49.554 SetCpuRateCap 失败,错误代码为 0x80070032。
我在任何地方都找不到对此错误的引用,并且非常困惑。尝试了各种方法(检查权限、关闭资源调控器、更新到最新的 CU、重新安装 MLS 等)。我们有一个类似的服务器,在相同的 Azure 平台上运行(相同的大小,W2012R2,相同的内存/CPU 配置),配置时间大约相同,似乎没有这个问题。 R 和 Python 服务都会发生这种情况。
如有任何帮助,我们将不胜感激。
我今天使用的解决方案从 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 >00 和 D:\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
启动器配置
文件并将每个文件中的 WORKING_DIRECTORY 设置更改为 WORKING_DIRECTORY=D:\MLSTEMP
(5) 重启盒子上的MSSQLLaunchpad服务。
有趣的是,使用的是 ****01 目录,而不是 ****00 目录。
现在应该可以工作了。您可能需要稍微调整一下权限。
HTH.
我来这里是为了寻找 Python 无法在 SQL Server 2022 上启动的解决方案。如果以下内容对某人有帮助:
C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Binn\pythonlauncher.config
。将 Python31x
的所有实例更改为 Python310
。在此之后(并且之前遵循官方 MLS Python 安装说明)以下工作有效:
EXEC sp_execute_external_script @script=N'import sys;print(sys.version)',@language=N'Python'
GO