2016-03-08 73 views
0

我們有一臺UNIX機器,其上包含R引擎並安裝了SQL Server ODBC驅動程序11.從遠程UNIX機器上運行的R連接到SQL Server

我們需要將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;') 

但收到這個錯誤:

Warning messages: 1: In odbcDriverConnect("driver=ODBC Driver 11 for SQL Server;server=10.XXX.XX.XX:1663;") :

[RODBC] ERROR: state HYT00, code 0, message [unixODBC][Microsoft][ODBC Driver 11 for SQL Server]Login timeout expired 2: In odbcDriverConnect("driver=ODBC Driver 11 for SQL Server;server=10.XXX.XX.XX:1663;") :

[RODBC] ERROR: state 08001, code 87, message [unixODBC][Microsoft][ODBC Driver 11 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. 3: In odbcDriverConnect("driver=ODBC Driver 11 for SQL Server;server=10.XXX.XX.XX:1663;") :

[RODBC] ERROR: state 08001, code 87, message [unixODBC][Microsoft][ODBC Driver 11 for SQL Server]SQL Server Network Interfaces: Connection string is not valid [87]. 4: In odbcDriverConnect("driver=ODBC Driver 11 for SQL Server;server=10.XXX.XX.XX:1663;") : ODBC connection failed

如果我跑telnet從UNIX機器上的SQL Server,它完美的作品。我的意思是這兩臺機器之間有一個健康的聯繫。

如何在不使用DSN的情況下將R連接到SQL Server?

+1

最好不要發佈實際的服務器地址和端口。 – nrussell

+1

我屏蔽了真實的IP地址。感謝提醒。 @nrussell – neverwinter

+1

在DBA Stack Exchange上問這可能會更好。 –

回答

1

我更改了服務器和端口之間的分隔符,從:,。它解決了我的問題。

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