R与SQL Server 2016错误“[Microsoft] [ODBC驱动程序管理器]找不到数据源名称,并且未指定默认驱动程序”

时间:2016-04-16 10:19:22

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

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

  

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

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

3 个答案:

答案 0 :(得分:0)

进入相同的消息......看起来它只是来自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.

答案 1 :(得分:0)

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

“未找到数据源名称,并且未指定默认驱动程序”意味着在连接详细信息中需要包含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兼容的驱动程序。

答案 2 :(得分:-1)

可能你应该在你的文件中创建一个txt文件并保存你的连接字符串,然后你应该使用readLines(&#34;你的连接string.txt&#34;)来读取你的连接字符串 并在您的代码中使用它 为我工作..... 仅供参考,您应该使用高级安全性禁用阻止R来自Windows防火墙....