【问题标题】:Package RCurl fails to connect to URL via sp_execute_external_script包 RCurl 无法通过 sp_execute_external_script 连接到 URL
【发布时间】:2018-11-04 22:02:15
【问题描述】:

我正在尝试使用机器学习服务在 SQL 2017 上使用 R 的 RCurl 包进行一些网络抓取。这是我尝试过的 sp_execute_external_script 代码示例:

EXEC sp_execute_external_script 
    @language = N'R',
    @script = N'library(RCurl)
library(XML)
url <- "http://www.anywebsite.com/"
tables = getURL(url)
tables <- readHTMLTable(tables, header = TRUE, as.data.frame = TRUE, stringsAsFactors = F)
OutputDataSet <- as.data.frame(tables[1])'
WITH RESULT SETS UNDEFINED;

我收到以下错误

消息 39004,级别 16,状态 20,行 0 发生“R”脚本错误 在使用 HRESULT 执行“sp_execute_external_script”期间 0x80004004。消息 39019,级别 16,状态 2,行 0 外部脚本 发生错误:加载所需的包:bitops 函数错误 (type, msg, asError = TRUE) : 连接失败 www.anywebsite.com 端口 80:访问错误调用:来源 ... getURL -> curlPerform -> .Call -> -> fun

执行错误。检查输出以获取更多信息。错误 eval(expr, envir, enclos) : 执行错误。检查输出 了解更多信息。调用:source -> withVisible -> eval -> eval -> .调用执行停止

sp_execute_external_script 代码中,如果我将 URL 字符串从“http”更改为“https”,则错误基本相同,但它引用了port 443。 最初的想法是我有防火墙问题。确实,如果我关闭 Windows 防火墙,sp_execute_external_script 会成功。
那么...什么 exe 需要权限?
我尝试为sqlservr.exe(数据库引擎服务)和launchpad.exe(SQL Server 启动板)添加例外。两次尝试都没有成功。

其他说明: R代码在RStudio中可以成功运行,防火墙出现异常。 这是带有 Windows Defender 防火墙的 Windows 10 环境。

更新
正如你在下面看到的,我已经接受了一个答案。这是在我的 Windows 10 环境中的样子:

【问题讨论】:

  • 尝试为 BxlServer.exe 或 RTerm.exe 设置一个例外。

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


【解决方案1】:

您需要禁用Windows firewall rule that is automatically installed when Machine Learning Services is added

出站防火墙规则的名称类似于“在 SQL Server 实例 MSSQLSERVER 中阻止 R 本地用户帐户的网络访问”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2020-05-12
    相关资源
    最近更新 更多