【发布时间】:2017-02-04 07:07:18
【问题描述】:
我们在使用 SQL Server 和 R(作为独立产品)方面经验丰富。我们已经安装了 R 并设置了 SQL Server 2016 测试服务器(来自 MSDN 的生产版本)。这台机器运行良好,我们尝试了一些基本的 R,并且运行良好(这也意味着我们参考了 Microsoft 的这篇文章:https://msdn.microsoft.com/en-us/library/mt696069.aspx)。
因此,我们遇到的问题是尝试从我们网络上的某个位置加载 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”运行,具有本地/主目录和该用户的 GUID。我确定这就是问题所在,但是如何将其更改为以具有适当权限的 AD 用户身份运行?
我有强烈的感觉,这是不可能的,但这里有人可以验证吗?
【问题讨论】:
标签: sql-server r permissions sql-server-2016