[英]Troubles connecting remote database sql via R script with Machine learning 2019
我已經安裝了 SQL Machine Learning 2019 並啟用了 R 和 Python。 我測試了安裝,它工作正常。
因此,當我嘗試連接到遠程數據庫 SQL 時,出現了很多錯誤。
這是我的代碼:
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
library(odbc)
con = dbConnect(odbc(), Driver = "ODBC Driver 17 for SQL Server", Server = "remote_server", Database = "test", UID="tuser", PWD="tpassword")'
, @input_data_1 = N''
, @output_data_1_name = N'
錯誤:
消息 39004,級別 16,狀態 20,第 0 行在執行帶有 HRESULT 0x80004004 的“sp_execute_external_script”期間出現“R”腳本錯誤。 消息 39019,級別 16,狀態 2,第 0 行發生外部腳本錯誤:
錯誤:nanodbc/nanodbc.cpp:950: 08001: [Microsoft][ODBC Driver 17 for SQL Server]命名管道提供程序:無法打開到 SQL Server [65] 的連接。
執行時出錯。 檢查輸出以獲取更多信息。 eval(ei,envir) 錯誤:執行錯誤。 檢查輸出以獲取更多信息。 調用:runScriptFile -> source -> withVisible -> eval -> eval -> .Call
其他測試:
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
library(DBI)
con = dbConnect(drv = odbc::odbc(), Driver = "ODBC Driver 17 for SQL Server", Database = "test", Server = "remoteserver", UID="tuser", PWD="tpassword")
, @input_data_1 = N''
, @output_data_1_name = N'
錯誤:
消息 39004,級別 16,狀態 20,第 0 行在執行帶有 HRESULT 0x80004004 的“sp_execute_external_script”期間出現“R”腳本錯誤。 消息 39019,級別 16,狀態 2,第 0 行發生外部腳本錯誤:
錯誤:nanodbc/nanodbc.cpp:950: 08001: [Microsoft][ODBC Driver 17 for SQL Server]命名管道提供程序:無法打開到 SQL Server [65] 的連接。
執行時出錯。 檢查輸出以獲取更多信息。 eval(ei,envir) 錯誤:執行錯誤。 檢查輸出以獲取更多信息。 調用:runScriptFile -> source -> withVisible -> eval -> eval -> .Call
最后測試:
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
library(RODBC)
con=odbcDriverConnect(''driver={ODBC Driver 17 for SQL Server}; server=remoteserver;database=remotedb;uid=tuser;pwd=tpassword'')
, @input_data_1 = N''
, @output_data_1_name = N'
錯誤是:
來自外部腳本的 STDERR 消息:警告消息:1:在 odbcDriverConnect("driver={ODBC Driver 17 for SQL Server}; server=remoteserver;database=remotedb;uid=tuser;pwd=tpassword") :[RODBC]錯誤:狀態 08001,代碼 65,消息 [Microsoft][ODBC 驅動程序 17 for SQL Server]命名管道提供程序:無法打開與 SQL Server [65] 的連接。 2:在 odbcDriverConnect("driver={ODBC Driver 17 for SQL Server}; server=remoteserver;database=remotedb;uid=tuser;pwd=tpassword") 中:[RODBC] 錯誤:狀態 HYT00,代碼 0,消息 [Microsoft] [ODBC Driver 17 for SQL Server]登錄超時3:在odbcDriverConnect("driver={ODBC Driver 17 for SQL Server}; server=remoteserver;database=remotedb;uid=tuser;pwd=tpassword") :
來自外部腳本的 STDERR 消息:[RODBC] 錯誤:狀態 08001,代碼 65,消息 [Microsoft][ODBC Driver 17 for SQL Server]與 SQL Server 建立連接時發生與網絡相關或特定於實例的錯誤. 服務器未找到或無法訪問。 檢查實例名稱是否正確以及 SQL Server 是否配置為允許遠程連接。 有關詳細信息,請參閱 SQL Server 聯機叢書。 4: 在 odbcDriverConnect("driver={ODBC Driver 17 for SQL Server}; server=remoteserver;database=remotedb;uid=tuser;pwd=tpassword") : ODBC 連接失敗
似乎我的另一台服務器有網絡問題,但我檢查了網絡連接、防火牆權限,還檢查了 Name Pipes 協議,它已啟用,每個檢查都正常,連接測試工作正常。
有人可以幫助我嗎? 或者給出一些解決這個問題的想法?
命名管道主要用於連接到同一台機器(客戶端運行的地方)。 指定到服務器的 TCP 連接:
Server = "tcp:servername"
此外,請檢查 Windows 防火牆規則,該規則可能會阻止來自 SQLServer 的 APP 容器的任何傳出連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.