我们有一台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?
答案 0 :(得分:1)
我将服务器和端口之间的分隔符从:
更改为,
。它解决了我的问题。
dbhandle <- odbcDriverConnect('driver=ODBC Driver 11 for SQL Server;server=10.XXX.XX.XX,1663;')