Sqlserver 2016 R Service环境安装的各种错误(坑)解决办法
相信很多朋友都会慕名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语言的奥妙之处了!
Sqlserver 2016 R Service环境安装的各种错误(坑)解决办法的更多相关文章
- php5.4下安装ECshop出现错误的解决办法
转:http://www.programmernote.com/?p=65 1.安装是会提示 Warning: date_default_timezone_get(): It is not safe ...
- mysql免安装版1067错误终极解决办法|在windows平台下MySql启动时的1067错误的解决方法及反思
[windows事件查看] 我的电脑--此电脑--右键管理--计算机管理--系统工具--事件查看器--Windows日志--应用程序--找错误标志,如下图 [提示] 按部就班,可能并不能解决你的问题, ...
- Wdcp在安装memcached出现错误的解决办法
今天在安装memcached时出现了以下错误(tar: libevent-1.4.14b-stable.tar.gz: Cannot open: No such file or directory), ...
- TensorFlow安装方法:附带坑解决办法
>>添加Anaconda 仓库的镜像 Anaconda 安装包可以到 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 下载. ...
- python2 安装scrapy出现错误提示解决办法~
首先:set STATICBUILD=true && pip install lxml 安装环境: windows7操作系统,已经正确安装python,pip. 使用pip功能安装Sc ...
- CentOS编译安装PHP常见错误及解决办法
1.configure: error: No curses/termcap library found yum -y install ncurses-devel 2.configure: error: ...
- centos7源码安装heartbeat可能出现的错误以及解决办法
问题:ipmilan_command.c: In function 'setup_ipmi_conn':ipmilan_command.c:283:2: error: 'sel_alloc_selec ...
- PHP编译安装时常见错误及解决办法,大全
1. configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution ...
- 树莓派 Learning 002 装机后的必要操作 --- 05 给树莓派搭建“x86 + pi”环境 -- 安装**32位运行库** -- 解决`E:未发现软件包 xxx` 问题
树莓派 装机后的必要操作 - 给树莓派搭建"x86 + pi"环境 – 安装32位运行库 – 解决E:未发现软件包 xxx 问题 我的树莓派型号:Raspberry Pi 2 Mo ...
随机推荐
- gnu make - 初学
因为要为Linux平台编译ACE,按照ACE的文档如何编译部分的说明,要求使用gnu make.其原文档说明如下: Using the Traditional ACE/GNU Configuratio ...
- 调用shutdown.sh后出现could not contact localhost8005 tomcat may not be running报错问题
之前调用tomcat的shutdown.sh无法关闭tomcat,一直报could not contact localhost8005 tomcat may not be running错. 在网上找 ...
- 安装Ruby、Sass在WebStrom配置Scss编译环境css自动压缩
安装Sass和Compass sass基于Ruby语言开发而成,因此安装sass前需要安装Ruby.(注:mac下自带Ruby无需在安装Ruby!) window下安装SASS首先需要安装Ruby,先 ...
- TensorFlow 神经网络相关函数
TensorFlow 激活函数 激活操作提供用于神经网络的不同类型的非线性.这些包括平滑的非线性(sigmoid,tanh,elu,softplus,和softsign),连续的,但不是到处可微函数( ...
- php源码学习——开篇
这个系列是对php源码的学习记录.由于本人水平有限,可能并不能写的非常清晰和深入,所以,可能只适合本人阅读:) 初次接触php源码,看到陌生的文件夹和大量的文件,可能会觉得茫然无措.php-inter ...
- 入门项目 A5-1 interface-bank 第三方接口1
from db import db_handler # 提现接口 def withdraw_interface(name, money): # 定义提现接口,传入name与money参数 user_d ...
- 蓝牙协议分析(10)_BLE安全机制之LE Encryption
1. 前言 前面文章介绍了两种BLE的安全机制:白名单[4]和LL privacy[3].说实话,在这危机四伏的年代,这两种“捂着脸讲话(其它人不知道是谁在讲话,因而不能插话.不能假传圣旨,但讲话的内 ...
- 自动化测试-15.selenium单选框与复选框状态判断
本篇主要介绍单选框和复选框的操作 一.认识单选框和复选框 1.先认清楚单选框和复选框长什么样 2.各位小伙伴看清楚哦,上面的单选框是圆的:下图复选框是方的,这个是业界的标准,要是开发小伙伴把图标弄错了 ...
- .net webapi跨域方法整理
方法一 在Web.Config里面加上了配置信息: <httpProtocol> <customHeaders> <add name="Access-Contr ...
- 2018 vue前端面试题
1.active-class是哪个组件的属性?嵌套路由怎么定义?答:vue-router模块的router-link组件. 2.怎么定义vue-router的动态路由?怎么获取传过来的动态参数? 答: ...