1. 程式人生 > >Sqlserver 2016 R Service環境安裝的各種錯誤(坑)解決辦法

Sqlserver 2016 R Service環境安裝的各種錯誤(坑)解決辦法

null 技術 led tro mssq lan 管理員 launcher 用戶

相信很多朋友都會慕名Sqlserver 2016的R語言功能,將自己的數據庫升級到Sqlserver 2016,但是當你安裝完Sqlserver 2016的R語言組件之後,你會發現並不能直接使用,比如當你在SSMS中執行下面這段測試R語言命令的時候,Sqlserver 2016會各種報錯。。。

 exec sp_execute_external_script  @language =NR,   
 @script=NOutputDataSet<-InputDataSet,     
 @input_data_1 =Nselect 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 =NR,   
 @script=NOutputDataSet<-InputDataSet,     
 @input_data_1 =Nselect 1 as hellowith 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環境安裝的各種錯誤(坑)解決辦法