不使用 DSN 时 R ODBC nanodbc 错误

Posted

技术标签:

【中文标题】不使用 DSN 时 R ODBC nanodbc 错误【英文标题】:R ODBC nanodbc error when not using DSN 【发布时间】:2018-05-02 17:03:34 【问题描述】:

在使用 DSN 与使用 R 包 ODBC 的非 DSN 之间遇到问题。

使用 DSN,我能够成功地连接到服务器并且代码消失了。但是,使用非 DSN odbc 连接字符串,我收到:

错误:nanodbc/nanodbc.cpp:950: IM002: [Microsoft][ODBC Driver Manager] Data >源名称未找到且未指定默认驱动程序

连接似乎在语法上是正确的,并且所有必填字段都根据多个函数文档填充,包括:https://support.rstudio.com/hc/en-us/articles/214510788-Setting-up-R-to-connect-to-SQL-Server-

odbc_con <- dbConnect(odbc::odbc(),
                  Driver = "SQLServer",
                  Server = server,
                  Database = test, 
                  Uid = 'username',
                  Pwd = 'password',
                  Port = 1433)

服务器和测试都在前面的代码中定义。 我尝试删除 odbc:: 并仅使用 odbc()。 使用分号,去掉大写。

卡住了,有什么建议吗?

【问题讨论】:

你的操作系统是什么? Linux/Windows?如果是 Linux,请检查 DSN 的 odbc.ini 和驱动程序的 odbcinst.ini 是否正确对齐(假设使用了 unixODBC)。在 Windows 中,检查 DSN 文件(在记事本中打开)通常保存在 Documents 文件夹中作为 My Data Sources 以查看其驱动程序/服务器/用户凭据。还要检查 odbcad32.exe(在搜索中键入)以获取 SQL Server 驱动程序信息。通常,驱动程序名称中有空格。 我是否理解您的错误:要连接到数据库,需要提供 DSN,以便驱动程序管理器知道它应该使用哪个驱动程序。因此,您应该指定一个,如果没有,它将使用默认驱动程序(此处未设置)。 Parfait,你说对了。驱动程序名称中有一个空格。很棒的收获! 也许它可以帮助某人:我遇到了类似的错误,在我的情况下驱动程序已被删除。 【参考方案1】:

当我从 Linux 切换到 R 的 Windows 机器时(注意没有其他变化)我得到了

"Error: nanodbc/nanodbc.cpp:950: IM002: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified" 

通过更改修复了 ODBC 连接问题

Driver = "ODBC Driver 17 for SQL Server"

Driver = "SQL Server"

希望这可以为您节省一些时间。

【讨论】:

以上是关于不使用 DSN 时 R ODBC nanodbc 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 VB.NET 创建 ODBC DSN

CodeIgniter 3.1.10:无法通过 DSN 使用 ODBC 连接到远程数据库

手动关闭 ODBC DSN 连接

用于更改 MS Access ODBC 系统 DSN 的 .mdb 文件路径的命令行?

连接到服务器上安装的ODBC DSN

odbc驱动程序管理器 未发现数据源名称并且未指定默认驱动程序 怎么解决