簡體   English   中英

使用機器學習 2019 通過 R 腳本連接遠程數據庫 sql 時遇到問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM