使用R连接到远程SQL Server

时间:2019-07-27 19:13:59

标签: r sql-server

我正在尝试将R连接到基于this的远程SQL Server。我用

library(DBI)
conn <- dbConnect(
  drv = RMySQL::MySQL(),
  dbname = "td",
  host = "hmsales.cav7mnk7ifa9.us-west-2.rds.amazonaws.com",
  username = "trades",
  password = "u#6MS06")

但连接无法正常工作。Failed to connect to database: Error: Can't connect to MySQL server on 'hmsales.cav7mnk7ifa9.us-west-2.rds.amazonaws.com'(0)我想念什么?请注意,我在这里没有提供真实的凭据。然后,我想连接一个名为“ rep_user_listings”的表。

在安装了用于SQL Server的ODBC Driver 11之后,我还使用了:

library(DBI)
conn <- dbConnect(
  drv = odbc::odbc(),
  driver = "ODBC Driver 11 for SQL Server",
  database = "td",
  server = "hmsales.cav7mnk7ifa9.us-west-2.rds.amazonaws.com",
  uid = "trade",
  pwd = "u#6MS06X")

我得到:

Error: nanodbc/nanodbc.cpp:950: 08001: [Microsoft][ODBC Driver 11 for SQL Server]Named Pipes Provider: Could not open a connection to SQL Server [53].

library(RODBC)
dbconnection <- odbcDriverConnect("Driver=ODBC Driver 11 for SQL Server;Server=hmsales.cav7mnk7ifa9.us-west-2.rds.amazonaws.com\\SQLEXPRESS; Database=tdsh;Uid=trade; Pwd=u#6MS06Xv; trusted_connection=yes")
initdata <- sqlQuery(dbconnection,paste("select * from rep_user_listings;"))
odbcClose(dbconnection)

我得到:

Warning messages:
1: In odbcDriverConnect("Driver=ODBC Driver 11 for SQL Server;Server=hmsales.cav7mnk7ifa9.us-west-2.rds.amazonaws.com\\SQLEXPRESS; Database=tdsh;Uid=tradeshow; Pwd=u#6MS06Xvdoy; trusted_connection=yes") :
  [RODBC] ERROR: state 08001, code -1, message [Microsoft][ODBC Driver 11 for SQL Server]SQL Server Network Interfaces: Error Locating Server/Instance Specified [xFFFFFFFF]. 
2: In odbcDriverConnect("Driver=ODBC Driver 11 for SQL Server;Server=hmsales.cav7mnk7ifa9.us-west-2.rds.amazonaws.com\\SQLEXPRESS; Database=tdsh;Uid=tradeshow; Pwd=u#6MS06Xvdoy; trusted_connection=yes") :
  [RODBC] ERROR: state HYT00, code 0, message [Microsoft][ODBC Driver 11 for SQL Server]Login timeout expired
3: In odbcDriverConnect("Driver=ODBC Driver 11 for SQL Server;Server=hmsales.cav7mnk7ifa9.us-west-2.rds.amazonaws.com\\SQLEXPRESS; Database=tdsh;Uid=tradeshow; Pwd=u#6MS06Xvdoy; trusted_connection=yes") :
  [RODBC] ERROR: state 08001, code -1, message [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.
4: In odbcDriverConnect("Driver=ODBC Driver 11 for SQL Server;Server=hmsales.cav7mnk7ifa9.us-west-2.rds.amazonaws.com\\SQLEXPRESS; Database=tdsh;Uid=tradeshow; Pwd=u#6MS06Xvdoy; trusted_connection=yes") :
  ODBC connection failed

2 个答案:

答案 0 :(得分:1)

R尚无开发中的本机SQL Server客户端,我知道的最新版本(https://github.com/imanuelcostigan/RSQLServer)已被归档/已弃用,而不是odbc包。

尝试一下:

library(DBI)
conn <- dbConnect(
  drv = odbc::odbc(),
  driver = "ODBC Driver 17 for SQL Server",
  database = "td",
  server = "hmsales.cav7mnk7ifa9.us-west-2.rds.amazonaws.com",
  uid = "trades",
  pwd = "u#6MS06")

(如果可行,请立即更改密码。:-)

我之所以选择"ODBC Driver 17 for SQL Server"是因为我以前为Windows和Linux计算机安装了mssql驱动程序(当前版本为here),并在此处找到了驱动程序“名称”:

unique(odbc::odbcListDrivers()$name)
# [1] "SQL Server"                    "PostgreSQL ANSI(x64)"         
# [3] "PostgreSQL Unicode(x64)"       "SQLite3 ODBC Driver"          
# [5] "ODBC Driver 17 for SQL Server"

如果您安装了旧版本(例如11或13)或其他版本,请改用该驱动程序(或升级)。

答案 1 :(得分:0)

首先,不要在线提供您的凭据。根据我正在查看的内容,打开您的终端并ping您的服务器,以确保您可以通过网络访问服务器。

如果您使用的是Linux,则已知问题之一是不要使用域名,如果您也使用ipaddess,请建立可信连接= no。