【问题标题】:Permissions issue in SQL Server 2016 and RSQL Server 2016 和 R 中的权限问题
【发布时间】: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


    【解决方案1】:

    出于安全和隔离目的,SQL Server R Services 始终在系统本地的工作帐户上下文中运行脚本。并且不可能在 AD 用户上下文中运行它们。

    【讨论】:

    • 这是我在阅读了所有来自微软的文章后所怀疑的。真可惜。我想知道这是否是我们在脚本中使用可信连接到我们的数据库服务器之一时遇到问题的原因:conn &lt;- odbcDriverConnect("driver={SQL Server};server=MySQLServer;database=MyDatabase;Trusted_Connection=True")
    • 从 R 脚本返回到运行 SQL Server R 服务的数据库的可信连接是受支持的方案。您能否确认您是否完成了Enable Implied Authentication for Launchpad Accounts 的设置步骤?您收到的错误消息是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    相关资源
    最近更新 更多