r - 使用 R 连接到远程 SQL Server

标签 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")

但连接无法正常工作。无法连接到数据库:错误:无法连接到“hmsales.cav7mnk7ifa9.us-west-2.rds.amazonaws.com”上的 MySQL 服务器 (0) 我想念什么?请注意,我在这里不提供真实的凭据。然后我想连接一个名为“rep_user_listings”的表。

安装`ODBC Driver 11 for SQL Server 后,我还使用了:

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

最佳答案

没有正在开发的 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)或其他版本,请改用该驱动程序(或升级)。

关于r - 使用 R 连接到远程 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57235301/

相关文章:

r - 将 R Shiny 应用程序保存为函数,并将参数传递给 Shiny 的应用程序

图中的 R 科学记数法

sql-server - 在 SELECT INTO 上锁定数据库

SQL 特殊字符

r - 在标题旁边放置 Shiny 的小部件

R:所有列组合的频率

r - 如何使用 foreach 和 doMC 包为随机模拟设置种子?

sql - 仅当第一部分不返回任何内容时才执行查询的第二部分

使用 CTE 的 SQL Server 2008 动态查询

sql - 需要有关 SQL 查询的帮助