【问题标题】:R with SQL server 2016 error "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"R 与 SQL Server 2016 错误“[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified”
【发布时间】:2016-04-16 10:19:21
【问题描述】:

我正在尝试将 R 与 SQL Server 2016 连接,当我尝试 RevoScaleR_SqlServer_GettingStarted.R 脚本或我自己的脚本时,我收到以下错误:

[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序 SQLDisconnect 中的 ODBC 错误 无法打开数据源。 doTryCatch(return(expr), name, parentenv, handler) 中的错误: 无法打开数据源。

注意:我可以在 SQL 管理工作室中执行 R 脚本。我已经在 ODBC 数据源(64 位)中为 SQL Server 版本 13.00.1300 配置了 Microsoft ODBC 驱动程序。

【问题讨论】:

  • 您使用什么版本的 R 客户端连接到 SQL Server?您是否尝试将计算从您的 R 客户端推送到 SQL Server 2016 R 服务?

标签: sql-server r sql-server-2016 revolution-r


【解决方案1】:

遇到相同的消息...看起来它只是来自 R 的一般消息,表明您的连接字符串有问题。

至少这是我的问题...示例代码中有一个空格,它需要您的服务器实例名称。删除空间为我修复了它。

# https://microsoft.github.io/sql-ml-tutorials/R/customerclustering/step/2.html
#Connection string to connect to SQL Server. Don't forget to replace MyServer with the name of your SQL Server instance

connStr <- paste("Driver=SQL Server;Server=", " localhost", ";Database=" , "tpcxbb_1gb" , ";Trusted_Connection=true;" , sep="" ); # Broken... due to space in the paste.
connStr <- paste("Driver=SQL Server;Server=", "localhost", ";Database=" , "tpcxbb_1gb" , ";Trusted_Connection=true;" , sep="" ); #Fixed.

【讨论】:

    【解决方案2】:

    我刚刚完成了相同错误消息的故障排除。

    “未找到数据源名称且未指定默认驱动程序”表示连接详细信息中需要包含 dsn 和驱动程序。

    rstudio 的以下文章很有帮助,这对我有用: https://support.rstudio.com/hc/en-us/articles/214510788-Setting-up-R-to-connect-to-SQL-Server-

    library(DBI)
    con2 <- dbConnect(odbc::odbc(),
                     .connection_string = "Driver={Simba SQL Server ODBC Driver};",
                     server= "<server>", 
                     dsn = "<data source name>",
                     database = "<database>",
                     uid = rstudioapi::askForPassword(prompt = 'Please enter username: '),
                     pwd = rstudioapi::askForPassword("Database password"),
                     timeout = 10,
                     trusted_connection = TRUE)
    

    除了正确连接之外,还需要正确设置 ODBC 管理器,并且需要选择/安装适用于 SQL Server 的驱动程序。

    【讨论】:

      【解决方案3】:

      您可能应该在 r wd 中创建一个 txt 文件并将连接字符串保存在其中,然后您应该使用 readLines("your connection string.txt") 来读取连接字符串 并在您的代码中使用它 为我工作...... 仅供参考,您应该从具有高级安全性的 Windows 防火墙中禁用阻止 R....

      【讨论】:

        猜你喜欢
        • 2019-06-28
        • 2014-09-15
        • 1970-01-01
        • 1970-01-01
        • 2014-02-09
        • 2017-02-03
        • 2015-10-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多