不使用 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 错误的主要内容,如果未能解决你的问题,请参考以下文章
CodeIgniter 3.1.10:无法通过 DSN 使用 ODBC 连接到远程数据库