2016-09-26 101 views
0

我們對SQL Server以及R(作爲獨立產品)非常有經驗。我們已經安裝了R,並安裝了SQL Server 2016測試服務器(來自MSDN的生產版本)。這臺機器工作正常,我們已經嘗試了一些基本的R,並且工作得很好(這也意味着我們已經提到了微軟的這篇文章:https://msdn.microsoft.com/en-us/library/mt696069.aspx)。SQL Server 2016權限問題和R

所以,我們遇到的問題是試圖從我們網絡上的某個位置加載R腳本。例如:

source(「\\\\MyServer\\MyRDirectory\\MyRScript.R」); 

萬一UNC沒有工作,我們試圖映射網絡驅動器的盤符,但收到了同樣的,「沒有這樣的文件或目錄」錯誤消息。

似乎有訪問此文件的權限問題。如果我們將該文件複製到本地測試服務器,它可以正常工作。例如,我們有這個問題沒有:

source(「C:\\Temp\\MyRScript.R」); 

對於這個測試,我使用SSMS 2016年,我的身份登錄與DBO權限的Windows AD用戶,我有權限的遠程文件夾。 SQL Server 2016服務帳戶也是具有適當權限的AD「用戶」。我讀到R有自己的用戶組(SQLRUserGroup),並且有20個用戶帳戶在該組中 - 所有這些都由SQL Server在安裝期間分配;這些是測試機器本地的帳戶。我懷疑這是問題:R/SQL Server必須嘗試以本地用戶身份訪問該網絡文件夾/文件 - 而不是具有適當權限的AD用戶。

有沒有人遇到過這個問題,並找到了一個你可以共享的解決方案?

僅供參考,如預期,在SQL Server 2016(SSMS)運行下列R-腳本:

execute sp_execute_external_script 
@language = N’R’ 
, @script = N’ OutputDataSet<- data.frame(c(USERNAME=Sys.getenv("USERNAME")),HOME=Sys.getenv("HOME"))' 
, @input_data_1 = N'' 
WITH RESULT SETS ((USERNAME varchar(200),HOME varchar(200))) 

,我的腳本運行爲「MSSQLSERVER01」與本地/ home目錄和GUID爲該用戶報告。我確定這是問題所在,但是如何將其更改爲具有適當權限的AD用戶運行?

我強烈地感覺到這是不可能的,但是這裏有人能證實嗎?

回答

0

爲了安全性和隔離目的,SQL Server R Services始終在系統本地的工作程序帳戶的上下文中運行腳本。並且不可能在AD用戶上下文中運行它們。

+0

這就是我在閱讀了微軟所有文章後所懷疑的。遊民。我想知道這是爲什麼我們在腳本中使用可信連接到我們的數據庫服務器時遇到問題:'conn < - odbcDriverConnect(「driver = {SQL Server}; server = MySQLServer; database = MyDatabase; Trusted_Connection = True」 )' – DotComCTO

+0

從R腳本返回到運行SQL Server R服務的數據庫的可信連接是受支持的方案。您是否可以確認您是否已經完成[爲啓動板帳戶啓用隱含身份驗證](https://msdn.microsoft.com/zh-cn/library/mt696069.aspx)的設置步驟?什麼是您收到的錯誤信息? –