SQL Server 2016 CU2(企业版)在这里,我的一位用户要求我们安装 R-Services。
我按照此页面上看似非常简单的说明进行操作
当我谈到使用简单测试的部分时
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,第 6 行无法启动“R”脚本的运行时。请检查“R”运行时的配置。消息 39019,级别 16,状态 1,第 6 行发生外部脚本错误:无法启动运行时。ErrorCode 0x80070057: 87(参数不正确)。消息 11536,级别 16,状态 1,第 6 行 EXECUTE 语句失败,因为其 WITH RESULT SETS 子句指定了 1 个结果集,但该语句在运行时仅发送了 0 个结果集。
因此,我开始在 Internet 上搜索有关 R-Services 的已知问题,并找到了这篇文章 - SQL Server R Services 的已知问题
- 我确保 R-Services 已与 Sql Server 版本(2016,CU2)保持同步。
- 我读到 rlauncher.config 文件中的长文件名可能会导致问题,因此我将 WORKING_DIRECTORY 重定向到 C:\TEMP\R_SERVICES。但是,我保留了 RHOME 和 MPI_HOME 配置条目,并且仍然使用长文件名。
- 我确保 Windows 组 SQLRUserGroup 对该工作目录文件夹具有完全权限。
每次配置更改后,我都重新启动了 SQL Server 和 SQL Server Launchpad。
但是,每次我尝试为 R-Services 运行示例 T-SQL 测试时,它都会失败,并且我在rlauncher.log
文件中看到此条目
[错误] 会话创建失败:失败 2 以获取 C:\TEMP\R_SERV~1\MSSQLSERVER01 的安全性
我正在寻求其他可能知道问题所在或任何其他故障排除链接的人的帮助。
我们最终不得不从我们的 Sql Server 安装目录中复制两个文件夹(MSSQLSERVER01 和 MSSQLSERVER02),这对我们来说位于此处
我们将上述文件夹复制到我们在 rlauncher.config 文件中指定的新 WORKING_DIRECTORY (C:\TEMP\R_SERVICES)。
之后,我们能够运行示例 R_Services 测试查询
如果您升级到 SQL Server 2016 的每月版本并收到错误代码 0x80004005 和“无法启动运行时”消息,您可能需要检查 rlauncher.config 文件中 WORKING_DIRECTORY 下指定的文件夹的 NTFS 权限。警告:编辑这些权限和/或更改那里的路径是危险的。请查看https://msdn.microsoft.com/en-US/library/mt590869.aspx了解详细信息。
没有任何解决方案可以使 LaunchPad 服务运行,除了删除整个 SQL 安装 -reboot-,然后从 Web 重新下载安装程序,指示将整个媒体下载到我的计算机并重新安装 -another reboot-,在我的案例我使用的是 SQL Server 2017 开发者版。我从安装中省略了独立机器学习服务器。