从远程UNIX计算机上运行的R连接到SQL Server

时间:2016-03-08 13:14:32

标签: sql-server r sql-server-2008 unix rodbc

我们有一台UNIX机器,其上包含R引擎并安装了SQL Server ODBC Driver 11。

我们需要将R连接到SQL Server。 SQL Server当前可以在另一台机器上运行,因此我们尝试使用以下代码将R连接到SQL Server。

library(RODBC)
dbhandle <- odbcDriverConnect('driver=ODBC Driver 11 for SQL Server;server=10.XXX.XX.XX:1663;')

但是得到了这个错误:

  

警告消息:1:在odbcDriverConnect(“驱动程序= SQL Server的ODBC驱动程序11;服务器= 10.XXX.XX.XX:1663;”)中:

     

[RODBC]错误:状态HYT00,代码0,消息[unixODBC] [Microsoft] [SQL Server的ODBC驱动程序11] 登录超时已过期 2:在odbcDriverConnect(“driver = ODBC Driver 11”对于SQL Server; server = 10.XXX.XX.XX:1663;“):

     

[RODBC]错误:状态08001,代码87,消息[unixODBC] [Microsoft] [用于SQL Server的ODBC驱动程序11] 在建立与SQL Server的连接时发生了与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。检查实例名称是否正确以及SQL Server是否配置为允许远程连接。有关详细信息,请参阅SQL Server联机丛书。 3:在odbcDriverConnect(“驱动程序= SQL Server的ODBC驱动程序11;服务器= 10.XXX.XX.XX:1663;”)中:

     

[RODBC]错误:状态08001,代码87,消息[unixODBC] [Microsoft] [用于SQL Server的ODBC驱动程序11] SQL Server网络接口:连接字符串无效[87]。 4:在odbcDriverConnect(“驱动程序= SQL Server的ODBC驱动程序11;服务器= 10.XXX.XX.XX:1663;”):ODBC连接失败

如果我从UNIX机器运行telnet到SQL Server,它可以正常工作。我的意思是这两台机器之间存在健康的联系。

如何在不使用DSN的情况下将R连接到SQL Server?

1 个答案:

答案 0 :(得分:1)

我将服务器和端口之间的分隔符从:更改为,。它解决了我的问题。

dbhandle <- odbcDriverConnect('driver=ODBC Driver 11 for SQL Server;server=10.XXX.XX.XX,1663;')