【问题标题】:SQL works in R studio but not in R-SerivcesSQL 在 Rstudio 中有效,但在 R-Services 中无效
【发布时间】:2017-07-11 16:34:14
【问题描述】:

此代码在 R-Studio 中完美运行,但无法使其在 MS Management Studio 中运行。它一直在说:

[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'myserver\LOCAL01'.

这不是我的用户,因为它是受信任的连接。谁能帮我理解一下?

ALTER PROCEDURE [dbo].[TESTIM] AS
BEGIN
    SET LANGUAGE ENGLISH
    CHECKPOINT 
    DBCC DROPCLEANBUFFERS
    EXEC sp_execute_external_script
        @language = N'R'
        , @script = N'
        con <- "Server=myserver\\LOCAL;Database=mydb;Trusted_Connection=true";
        sql <- RxInSqlServer(connectionString = con, shareDir = "c:\\TMP");
        local <- RxLocalSeq(sql);
        rxSetComputeContext(local)
        ff <- RxSqlServerData(sqlQuery = "select top 1 * from mytable", connectionString = con);
        t = rxImport(ff);
        OutputDataSet <- data.frame(SUCCESS = TRUE);
        '
    WITH RESULT SETS (([SUCCESS] BIT))
END

【问题讨论】:

    标签: r sql-server-2016 microsoft-r


    【解决方案1】:

    因此,当您执行sp_execute_external_script 时,它会在安装 SQL Server R Services 期间创建的 20 个 Windows 用户帐户(工作人员帐户)之一下执行。创建这些帐户的目的是在属于 SQL Server Trusted Launchpad 服务的安全令牌下运行任务。

    这很好用,但是如果您需要在 R 脚本中创建一个 SQL 连接(如您的情况)并且您使用受信任的连接(Windows 身份验证),那么您将在上面提到的用户帐户下执行('myserver\ LOCAL01'),并且需要授予该帐户代表您登录 SQL Server 实例的权限。

    为此:

    1. 在 SQL Server Management Studio 的对象资源管理器中,展开安全性,右键单击登录名,然后选择新建登录名。
    2. 在登录 - 新建对话框中,单击搜索。
    3. 单击对象类型并选择组。取消选择其他所有内容。
    4. 在输入要选择的对象名称中,输入 SQLRUserGroup 并单击检查名称。
    5. 与实例的 Launchpad 服务关联的本地组的名称应解析为类似 instancename\SQLRUserGroup 的名称。点击确定。
    6. 默认情况下,登录被分配给公共角色,并具有连接数据库引擎的权限。
    7. 点击确定。

    应该可以了(以上步骤抄自here

    如果您想了解有关用户帐户的更多信息,可以查看我的博文"Microsoft SQL Server R Services - Internals III"

    希望这会有所帮助!

    尼尔斯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 2017-11-30
      • 2017-08-17
      • 2014-02-22
      • 2015-08-22
      相关资源
      最近更新 更多