2016-09-26 98 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)的设置步骤?什么是您收到的错误信息? –