程序包 RCurl 无法通过 sp_execute_external_script 连接到 URL
Package RCurl fails to connect to URL via sp_execute_external_script
我正尝试在 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;
我收到以下错误
Msg 39004, Level 16, State 20, Line 0 A 'R' script error occurred
during execution of 'sp_execute_external_script' with HRESULT
0x80004004. Msg 39019, Level 16, State 2, Line 0 An external script
error occurred: Loading required package: bitops Error in function
(type, msg, asError = TRUE) : Failed to connect to
www.anywebsite.com port 80: Bad access Calls: source ...
getURL -> curlPerform -> .Call -> -> fun
Error in execution. Check the output for more information. Error in
eval(expr, envir, enclos) : Error in execution. Check the output
for more information. Calls: source -> withVisible -> eval -> eval ->
.Call Execution halted
在 sp_execute_external_script
代码中,如果我将 URL 字符串从 "http" 更改为 "https",错误本质上是相同的,但它引用了 port 443
代替。
最初的想法是我有防火墙问题。事实上,如果我关闭 Windows 防火墙,sp_execute_external_script
成功。
那么...什么 exe 需要权限?
我尝试为 sqlservr.exe
(数据库引擎服务)和 launchpad.exe
(SQL 服务器启动板)添加例外。两次尝试均未成功。
其他注意事项:
R
代码在RStudio中可以运行成功,在防火墙中有异常。
这是具有 Windows Defender 防火墙的 Windows 10 环境。
更新
正如您在下面看到的,我已经接受了一个答案。这是我的 Windows 10 环境中的样子:
您需要禁用 Windows firewall rule that is automatically installed when Machine Learning Services is added。
出站防火墙规则的名称类似于 "Block network access for R local user accounts in SQL Server instance MSSQLSERVER"
我正尝试在 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;
我收到以下错误
Msg 39004, Level 16, State 20, Line 0 A 'R' script error occurred during execution of 'sp_execute_external_script' with HRESULT 0x80004004. Msg 39019, Level 16, State 2, Line 0 An external script error occurred: Loading required package: bitops Error in function (type, msg, asError = TRUE) : Failed to connect to www.anywebsite.com port 80: Bad access Calls: source ... getURL -> curlPerform -> .Call -> -> fun
Error in execution. Check the output for more information. Error in eval(expr, envir, enclos) : Error in execution. Check the output for more information. Calls: source -> withVisible -> eval -> eval -> .Call Execution halted
在 sp_execute_external_script
代码中,如果我将 URL 字符串从 "http" 更改为 "https",错误本质上是相同的,但它引用了 port 443
代替。
最初的想法是我有防火墙问题。事实上,如果我关闭 Windows 防火墙,sp_execute_external_script
成功。
那么...什么 exe 需要权限?
我尝试为 sqlservr.exe
(数据库引擎服务)和 launchpad.exe
(SQL 服务器启动板)添加例外。两次尝试均未成功。
其他注意事项:
R
代码在RStudio中可以运行成功,在防火墙中有异常。
这是具有 Windows Defender 防火墙的 Windows 10 环境。
更新
正如您在下面看到的,我已经接受了一个答案。这是我的 Windows 10 环境中的样子:
您需要禁用 Windows firewall rule that is automatically installed when Machine Learning Services is added。
出站防火墙规则的名称类似于 "Block network access for R local user accounts in SQL Server instance MSSQLSERVER"