[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序

时间:2013-06-14 19:08:16

标签: odbc install postgresql-9.2

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

  

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

在我的ODBC管理器中,我有一个用户DSN和系统DSN的列表。我尝试安装一个postgres odbc驱动程序,看看是否会有所帮助,但事实并非如此。

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

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

9 个答案:

答案 0 :(得分:43)

  1. 参考错误: [Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序。

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

    • 重要的是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不匹配所需的一切。

      Here is an article that may provide some additional details

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

  2. 在提及问题的OLE DB提供程序部分时,它似乎是一种类似的问题,其中应用程序无法找到指定提供程序的配置。

答案 1 :(得分:28)

出现此错误,因为我在用户DSN中使用了数据源名称而不是系统DSN enter image description here

答案 2 :(得分:3)

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

答案 3 :(得分:3)

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

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

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

在testsettings文件中切换回32位修复了问题。

using a test settings file

答案 4 :(得分:2)

就我而言,它可以在 x86 中使用,但不能在 x64 中使用。

这很荒谬,但是在x64中,必须先添加以下更改,然后才能起作用:

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

请注意添加了*.accdb

答案 5 :(得分:1)

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

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

就我而言,应该是Microsoft Access Driver (*.mdb, *.accdb)而不是Microsoft Access Driver (*.mdb)

答案 6 :(得分:0)

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

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

我试图从Alteryx调用SQL Server。

答案 7 :(得分:0)

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

答案 8 :(得分:0)

如果您使用的是IIS,也许您应该尝试
“应用程序池”->“ DefaultAppPool”->“应用程序池默认值” ->“ 32位应用程序激活”->设置为假