94

我第一次尝试在使用 PostgreSQL 9 的 Windows XP Pro 上打开一个程序。我收到一条错误消息:

尝试登录或创建生产数据库时遇到问题。详细信息:[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序

在我的 ODBC 管理器中,我有一个用户 DSN 和系统 DSN 的列表。我尝试安装 postgres odbc 驱动程序以查看是否有帮助,但没有。

程序文件中有一个 connect.dat 文件,其中有一行“OLE DB Provider = MSDASQL”。更改此条目会更改我收到的错误消息“找不到提供程序,它可能没有正确安装”。

我不知道要插入什么提供商名称才能使其正常工作。我对此错误进行了广泛的研究,但无济于事。任何建议将不胜感激。

4

10 回答 10

74
  1. 参考错误:[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified。

    该错误意味着在 Windows 注册表中找不到您在连接配置中指定的数据源名称 (DSN)。

    • 重要的是,您的 ODBC 驱动程序的可执行和链接格式 (ELF) 与您的应用程序相同。换句话说,您需要一个用于 32 位应用程序的 32 位驱动程序或一个用于 64 位应用程序的 64 位驱动程序。

      如果这些不匹配,则可以为 32 位驱动程序配置 DSN,当您尝试在 64 位应用程序中使用该 DSN 时,将找不到 DSN,因为注册表将 DSN 信息保存在不同的位置取决于 ELF(32 位与 64 位)。

      确保您使用的是正确的 ODBC 管理器工具。在 32 位和 64 位 Windows 上,默认的 ODBC 管理器工具位于c:\Windows\System32\odbcad32.exe. 但是,在 64 位 Windows 机器上,默认为 64 位版本。如果您需要在 64 位 Windows 系统上使用 32 位 ODBC 管理器工具,您需要运行此处找到的工具:C:\Windows\SysWOW64\odbcad32.exe

      当用户使用默认的 64 位 ODBC 管理器来配置 DSN 时,我看到这种绊脚石的地方。认为它适用于 32 位 DSN。然后,当 32 位应用程序尝试使用该 DSN 进行连接时,会出现“找不到数据源...”。

    • 确保 DSN 的拼写与 ODBC 管理器中配置的 DSN 的拼写匹配也很重要。一个字母错误就是 DSN 不匹配所需要的。

      这是一篇可能会提供一些其他详细信息的文章

      但是,它可能与您拥有的产品品牌不同;这是使用 ODBC 数据源名称时遇到的一般问题。

  2. 参考您问题的 OLE DB 提供程序部分,它似乎是类似类型的问题,应用程序无法找到指定提供程序的配置。

于 2014-08-21T14:11:36.300 回答
67

收到此错误是因为我在用户 DSN 而不是系统 DSN 中有数据源名称 在此处输入图像描述

于 2017-01-17T17:39:41.307 回答
11

例如,问题可能来自驱动程序名称而不是DRIVER={MySQL ODBC 5.3 Driver}尝试DRIVER={MySQL ODBC 5.3 Unicode Driver},您可以从管理工具中看到驱动程序的名称

于 2017-05-20T08:42:25.453 回答
5

就我而言,它在x86中工作,但在x64中没有。

这很荒谬,但在 x64 中,必须添加以下更改才能生效:

x86 -> szDsn = "DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)};
x64 -> szDsn = "DRIVER={MICROSOFT ACCESS DRIVER (*.mdb, *.accdb)};

注意添加*.accdb

于 2020-05-28T12:11:39.037 回答
4

如果您使用的是 IIS,也许您应该尝试
“应用程序池”-->“DefaultAppPool”-->“应用程序池默认值”-->“32-Bit-application-activ”--> 设置 false

于 2019-04-16T12:27:24.027 回答
3

我使用以下数据驱动测试得到了这个:

Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)

问题是上面的驱动程序只有 32 位。我已将 Visual Studio 的 testsettings 文件切换到 64 位以测试仅 64 位的应用程序。

在 testsettings 文件中切换回 32 位解决了这个问题。

使用测试设置文件

于 2018-01-27T00:36:58.453 回答
3

在 ODBC 管理器工具中检查确切的驱动程序名称。按 Windows 键 + R 然后:

  • C:\Windows\System32\odbcad32.exe在 32 位系统上
  • C:\Windows\SysWOW64\odbcad32.exe在 64 位系统上

在我的情况下,它应该是Microsoft Access Driver (*.mdb, *.accdb)而不是Microsoft Access Driver (*.mdb).

于 2020-10-13T17:37:19.610 回答
0

我尝试了上述方法,但发现我的问题是我使用了 | 以 DSN 的名义(我有多个 ODBC 连接器 - 每个 DB 一个 - 以确保我不会混合数据)

我换了| (管道)带有_,现在一切正常。

我试图从 Alteryx 调用 SQL Server。

于 2018-07-12T04:13:06.277 回答
0

按照此处的说明http://help.loftware.com/pages/viewpage.action?pageId=27099554在安装Excel 驱动程序以使用我想要的无 DSN 连接之前,我必须安装Microsoft Access Database Engine 2010 Redistributable从 perl 中使用。

于 2019-02-19T00:02:03.043 回答
0

对我来说,以下工作:

  1. 将链接服务器添加为系统 DSN(ODBC 系统源管理),例如名称 -> TEST_NAME

在此处输入图像描述

  1. 使用TEST_NAME作为数据源 在此处输入图像描述
于 2021-09-08T11:41:10.400 回答