陋室铭
永远也不要停下学习的脚步(大道至简至易)

posts - 2169,comments - 570,views - 413万

相信很多朋友都会慕名Sqlserver 2016的R语言功能,将自己的数据库升级到Sqlserver 2016,但是当你安装完Sqlserver 2016的R语言组件之后,你会发现并不能直接使用,比如当你在SSMS中执行下面这段测试R语言命令的时候,Sqlserver 2016会各种报错。。。

 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   

 

本人也是折腾了好久最终才成功在Sqlserver 2016中执行了R语言。

首先如果你要启用Sqlserver的R语言功能,必须要启动Sqlserver的两个服务:

1.Sqlserver实例数据库引擎服务:

2.Sqlserver实例SQL Server Lanuchpad服务:

 

启动这两个服务之后,还要在SSMS中执行下面这段SQL脚本,才能在Sqlserver中开启执行外部脚本(R语言)的功能。注意执行完这段脚本后要重启数据库引擎服务和SQL Server Lanuchpad服务才会正式生效

Exec sp_configure  'external scripts enabled', 1;
reconfigure;

 

如果你在安装Sqlserver 2016的时候,安装路径中如果出现了空格,那么恭喜你。。。你还需要修改一个系统配置文件,否者Sqlserver 2016 的R语言运行时会报错。。。

比如我安装Sqlserver 2016的时候安装路径为D:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER

那么找到文件D:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\rlauncher.config

使用操作系统管理员权限启动记事本(notepad),打开rlauncher.config,找到WORKING_DIRECTORY这一项修改为一个不带空格的文件夹路径,这里我使用了自定义的一个文件夹D:\RWorkspace

 

 将D:\RWorkspace赋予windows用户everyone的完全控制权限(看到有文章说其实是要给这个文件夹赋予SQL Server Lanuchpad服务的执行账户的完全控制权限,但是由于我没有在系统中找到SQL Server Lanuchpad服务的执行账户,所以这里就赋予了用户everyone的完全控制权限):

 

 

然后以管理员身份启动命令行工具CMD,定位到文件夹D:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library\RevoScaleR\rxLibs\x64

执行CMD命令:

registerRext.exe /uninstall

结果如下:

 

再执行CMD命令:

registerRext.exe /install

结果如下:

 

再次在SSMS中执行上面的测试R语言命令:

 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   

结果如下,R语言模块成功运行!

 

但是由于执行了registerRext.exe /uninstall和registerRext.exe /install,我发现这两个命令其实最终会将rlauncher.config文件中WORKING_DIRECTORY的路径更改为D:\SQL-mssqlserver-ExtensibilityData,如下图所示:

所以前面我们修改rlauncher.config中配置文件和给文件夹D:\RWorkspace赋予everyone完全控制权限的步骤可能是多余的,但是最终目的反正就是不能让rlauncher.config文件中WORKING_DIRECTORY的路径包含空格,否者Sqlserver 2016的R语言运行时会报错,这一点必须要注意。

 

好了R语言服务终于可以成功使用了,接下来就可以探究Sqlserver R语言的奥妙之处了!

posted on   宏宇  阅读(440)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2016-04-09 WINDOWS 7下的记事本程序目录
2008-04-09 3种Timer的用法(转)
2007-04-09 ASP.NET 2.0移动开发入门之使用模拟器
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示