R连接到MS SQL

时间:2016-06-08 13:55:51

标签: sql-server r azure rodbc

使用R我尝试在Azure VM上连接到MS SQL 2014 (不是Windows身份验证)

library(RODBC)
conn <- odbcDriverConnect(connection = "Driver=SQL Server;Server=someinternetmachine.cloudapp.net;Database=MyDatabase;Uid=MyUsername;Pwd=MyPassword;")
queryResult <- sqlQuery(conn, "SELECT top 10 * FROM sometable")

使用RODBC可以使用连接字符串(无DSN)来执行此操作吗?

使用上面我得到以下错误

Warning messages:
1: In odbcDriverConnect("driver={SQL Server};server=servername\\instancename,port;database=testing;uid=abc;pwd=123456") :
  [RODBC] ERROR: state 08001, code 6, message [Microsoft][ODBC SQL Server Driver][DBNETLIB]Specified SQL server not found.
2: In odbcDriverConnect("driver={SQL Server};server=servername\\instancename,port;database=testing;uid=abc;pwd=123456") :
[RODBC] ERROR: state 01000, code 11001, message [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
3: In odbcDriverConnect("driver={SQL Server};server=servername\\instancename,port;database=testing;uid=abc;pwd=123456") :

ODBC连接失败

2 个答案:

答案 0 :(得分:1)

您是否为Azure中的VM选择了公共配置?此外,您需要在Windows防火墙中打开SQL Server的端口(端口号取决于默认或命名实例)。此外,如果您使用动态端口,则在命名实例的情况下,还需要打开SQL浏览器。更多信息可以在here链接中找到。

答案 1 :(得分:1)

使用

进行管理
driver.name <- "SQL Server"
db.name <- "master"
host.name <- "someinternetmachine.cloudapp.net"
port <- ""
server.name <- "someinternetmachine.cloudapp.net"
user.name <- "MyUsername"
pwd <- "MyPassword"
# Use a full connection string to connect 
con.text <- paste("DRIVER=", driver.name,
              ";Database=", db.name,
              ";Server=", server.name,
              ";Port=", port,
              ";PROTOCOL=TCPIP",
              ";UID=", user.name,
              ";PWD=", pwd, sep = "")

con1 <- odbcDriverConnect(con.text)

res <- sqlQuery(con1, 'select * from information_schema.tables')

odbcCloseAll()