【发布时间】: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 环境。
【问题讨论】:
-
尝试为 BxlServer.exe 或 RTerm.exe 设置一个例外。
标签: r sql-server sql-server-2017 microsoft-r