Sql-Server

使 SQL Server 2016 R 服務(數據庫內)工作時出現問題

  • March 7, 2019

SQL Server 2016 CU2(企業版)在這裡,我的一位使用者要求我們安裝 R-Services。

我按照此頁面上看似非常簡單的說明進行操作

設置 SQL Server 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  

它失敗了

消息 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文件中看到此條目

$$ Error $$會話創建失敗: 失敗 2 以獲取 C:\TEMP\R_SERV~1\MSSQLSERVER01 的安全性

我正在尋求其他可能知道問題所在或任何其他故障排除連結的人的幫助。

我們最終不得不從我們的 Sql Server 安裝目錄中複製兩個文件夾(MSSQLSERVER01 和 MSSQLSERVER02),這對我們來說位於此處

E:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\ExtensibilityData

我們將上述文件夾複製到我們在 rlauncher.config 文件中指定的新 WORKING_DIRECTORY (C:\TEMP\R_SERVICES)。

之後,我們能夠執行範例 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  

引用自:https://dba.stackexchange.com/questions/154637