从R到SQL的RODBC连接失败

时间:2019-08-30 10:53:48

标签: r sql-server rodbc

我正在使用R Studio通过library(RODBC)连接到SQL Server Management。

请注意,以下代码在我的本地系统上可用,但是在尝试远程连接时不起作用。

这是我的连接代码:

connection <- RODBC::odbcDriverConnect(   'driver={SQL Server};server=SERVERNAME ;database=DBNAME;trusted_connection=TRUE' )

我收到以下警告消息:

Warning messages:

1: In RODBC::odbcDriverConnect("driver={SQL Server};server=SERVERNAME;database=DBNAME;trusted_connection=TRUE") :
  [RODBC] ERROR: state 08001, code 18, message [Microsoft][ODBC SQL Server Driver][DBNETLIB]SSL Security error
2: In RODBC::odbcDriverConnect("driver={SQL Server};server=SERVERNAME;database=DBNAME;trusted_connection=TRUE") :
  [RODBC] ERROR: state 01000, code 772, message [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (SECDoClientHandshake()).
3: In RODBC::odbcDriverConnect("driver={SQL Server};server=SERVERNAME;database=DBNAME;trusted_connection=TRUE") :
  ODBC connection failed

这真的很奇怪,因为我绝对可以访问所涉及的服务器和数据库。

值得注意的是,我可以从本地系统访问服务器(以上代码有效),并且可以访问远程系统(代码无效)。

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:0)

RODBC并不是一个很好的软件包,最好使用RStudio构建的odbc代替:

library(odbc)

con <- dbConnect(odbc(), 
                 Driver = "SQL Server", 
                 Server = "SERVER",
                 Database = "DATABASE",
                 Trusted_Connection = "True" ,
                 timeout = 5000
)

答案 1 :(得分:-1)

在以下命令行中
connection <- RODBC::odbcDriverConnect( 'driver={SQL Server};server=SERVERNAME ;database=DBNAME;trusted_connection=TRUE' )

make trust_connection = FALSE或否。这是SSL错误的简单案例。如果您使用的是Linux,则对于服务器,请使用IP地址而不是主机名。