在64位操作系统中从64位应用程序读取mdb文件时,未找到数据源名称且未指定默认驱动程序:

本文关键字:64位 数据源 未指定 驱动程序 默认 应用程序 操作系统 读取 mdb 文件 | 更新日期: 2023-09-27 18:15:17

我有一个ASP。. NET MVC应用程序(64位)运行在64位Windows系统(Windows Server 2012)。

我的web应用程序需要读取mdb数据库,然后我创建了下一个代码:

using (var myConnection = new OdbcConnection())
{                    
    try
    {
        string myConnectionString = @"Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + fileNameWithPath + ";Persist Security Info=True";
        myConnection.ConnectionString = myConnectionString;
        myConnection.Open();
        OdbcCommand cmd = myConnection.CreateCommand();
        cmd.CommandText = "SELECT * FROM myTable";
        OdbcDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        // Load the result into a DataTable
        myDataTable = new DataTable();
        myDataTable.Load(reader);
    }
    catch (Exception exception)
    {
        //nexy exception is caught here: "ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"
    }
    finally
    {
        myConnection.Close();
    }
}

其中fileNameWithPath为mdb文件路径。

当我执行上面的代码时,在

行中出现了下一个令人讨厌的异常

myConnection.Open();:

ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not找到且未指定默认驱动

我已经检查了服务器,它已经安装了关于ODBC驱动程序的下一个文件:

文件odbcad32.exe文件夹下的C:'Windows'System32

文件夹C:'Windows'SysWOW64下的文件odbcad32.exe

我的问题是:我的服务器设置正确吗?我是否已经安装了64位版本的ODBC ?

和更重要的是:我可以用这种配置在x64服务器上运行x64应用程序吗?否则,还有其他选择吗?值得一提的是:

  • 不允许在服务器上安装额外的软件
  • web应用程序必须是64位

在64位操作系统中从64位应用程序读取mdb文件时,未找到数据源名称且未指定默认驱动程序:

要使用x32位版本的Access数据库引擎,则需要在该计算机上安装x32位版本的数据库引擎。

而要使用x64位版本的Access数据库引擎,则需要安装x64位版本的Access数据库引擎。

嘿,如果你需要读取oracle数据库,那么你需要安装oracle数据库引擎来读取驻留在磁盘驱动器上的oracle文件。

如果你不能安装任何额外的软件,比如oracle来读取oracle文件,或者SQL server来读取SQL server文件,或者在这个例子中是Access,那么你就是鸭子肥皂。实际上,要阅读PDF文件,你需要安装一些PDF文件软件。

所以除非你能解决不允许在你的服务器上安装合适的软件的问题,否则你将无法读取这些软件消耗的给定文件——这适用于几乎所有的软件系统——你需要在服务器上安装合适的软件来启用这些文件。

所以确实存在x32和x64位版本的Access数据库引擎(ACE),除非你被允许安装这样的软件,否则你不能读取和使用这样的数据。

所以请记住,在开发软件时,如果你想打开一个word文件或pdf文件,或者像任何软件系统一样,你将需要安装apoopate软件来处理这些文件- Access也不例外。如果你需要打开一个ppt文件,那么很明显你需要在那台电脑上安装ppt软件。

因此您需要在该服务器上获取并安装x64位版本的Access数据库引擎。既然你注意到你不能安装任何软件,那么你就不太可能实现你的目标。

我通过在IIS的应用程序池的高级设置中启用32位应用程序解决了一个非常类似的问题