【问题标题】:How do I connect to an SQL server database in R如何在 R 中连接到 SQL Server 数据库
【发布时间】:2015-11-12 23:04:44
【问题描述】:

我正在尝试使用 R 连接到 SQL Sever 数据库,但不确定查询字符串的详细信息。我通常在 SQL Server 2008 上使用 SQL Server Management Studio,并使用单点登录进行连接。我找到了下面的例子

myconn <- odbcDriverConnect(connection="Driver={SQL Server 
Native Client 11.0};server=hostname;database=TPCH;
trusted_connection=yes;")

我收到以下警告消息

Warning messages:
1: In odbcDriverConnect(connection = "Driver={SQL Server \nNative Client 11.0};server=hostname;database=TPCH;\ntrusted_connection=yes;") :
  [RODBC] ERROR: state IM002, code 0, message [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
2: In odbcDriverConnect(connection = "Driver={SQL Server \nNative Client 11.0};server=hostname;database=TPCH;\ntrusted_connection=yes;") :
  ODBC connection failed

如何找到我需要的细节?

【问题讨论】:

  • 我认为您只需要“SQL Server”作为您的驱动程序。这就是我用来连接 SQL Server 2012 的全部内容。
  • 我认为你已经(在你的实际实现中)用你的实际主机名替换了 server=hostname 中的主机名....\

标签: sql-server r rodbc


【解决方案1】:

我过去曾使用我已经拥有的 odbc 命名连接来完成此操作。如果您不知道,您可以在 Windows 中通过输入搜索提示“odbc”并选择“设置数据源”来创建一个。例如 - 如果您将 odbc 连接命名为“con1”,则可以通过以下方式连接:

con<-odbcConnect('con1') #opening odbc connection


df<-sqlQuery(con, "select  *
                         from ssiD.dbo.HOURLY_SALES
                         ") #querying table


close(con)

【讨论】:

  • windows 的哪个搜索提示然后将您带到 odbc 管理?
  • 是的。然后设置到数据库的命名连接
  • @user1605665 这对您不起作用吗?如果您需要有关 ODBC 连接的说明 - google.com/…
  • 我收到一个错误,表明 odbcConnect 函数未知。我应该先安装一个包吗?
  • @Eralper - 可能就是这种情况。 install.packages('RODBC') 应该可以工作。
【解决方案2】:

这对我有用。

library(RODBC)
dbconnection <- odbcDriverConnect("Driver=ODBC Driver 11 for SQL Server;Server=server_name; Database=table_name;Uid=; Pwd=; trusted_connection=yes")
initdata <- sqlQuery(dbconnection,paste("select * from MyTable;"))
odbcClose(channel)

另外,请参阅这些链接。 RODBC odbcDriverConnect() Connection Error

https://www.simple-talk.com/sql/reporting-services/making-data-analytics-simpler-sql-server-and-r/

【讨论】:

    【解决方案3】:

    问题比这个简单。最大的线索是错误消息中的\n。某些东西重新排列了您的连接字符串,因此驱动程序名称中现在有一个换行符。这与任何注册的驱动程序名称都不匹配。痛苦和苦难随之而来。确保你的整个连接字符串在一行上!

    我经常使用: driver={SQL Server Native Client 11.0}; ...

    而且效果很好。比不得不依赖预定义的连接名称要好得多。

    【讨论】:

      【解决方案4】:

      尝试另一个 ODBC 驱动程序。 在 Windows 中按“windows”按钮,然后键入“odbc”。 单击“数据源 (ODBC)”链接。 转到“驱动程序”选项卡以查看 SQL Server 的可用驱动程序。 另外 - 删除连接字符串中分号后的“”空格。 注意 - 数据库属性应该指向一个数据库名而不是一个表名。

      这对我有用:

      odbcDriverConnect("Driver=SQL Server Native Client 11.0;Server=<IP of server>;Database=<Database Name>;Uid=<SQL username>;Pwd=<SQL password>")
      

      【讨论】:

        【解决方案5】:

        首先,您需要安装包“RSQLServer”及其所有依赖项。 然后在 RStudio 中执行以下命令,带上相关参数:

        conn <- DBI::dbConnect(RSQLServer::SQLServer(),
                         server = '<server>', 
                         port = '<port>',
                         properties = list(
                           user = '<user>',
                           password = '<password>'
                         ))
        

        最后,db_list_tables(conn) 为您提供了相应数据库中的表列表。

        【讨论】:

        • RSQLServer 似乎已从 CRAN 中删除
        猜你喜欢
        • 2013-12-14
        • 1970-01-01
        • 2017-01-16
        • 2013-07-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多