Unexpected error from external database driver (1)

         使用C#开发的Web系统,其中有项功能,上传Excel报表,从Excel里读取数据,导入到数据库中。

         从10月底开始,使用者反应无法正常使用,报如下错误信息:

         Unexpected error from external database driver (1)

          经查,所有的批量导入都出现这个错误,不能导入,因此判断为是服务器上系统环境发生了改变。

          网上查询,是由于10月10日微软发布了新的补丁程序,打了此补丁以后,会影响到读取Excel的引擎。

          程序中如果是使用“Provider=Microsoft.Jet.OLEDB.4.0“,则会受影响。

          解决办法:

          1、卸载此补丁程序

               我从控制面板--->删除程序,未找到此补丁程序。

           2、使用新的引擎

               程序改为”Provider=Microsoft.ACE.OLEDB.12.0“  

              经如此修改后,我有两个系统,分别部署在A、B服务器上。

              1)、A服务器,系统环境Win 2008 R2 64bit English,Office 2010 32bit

                    在此服务器上,程序更新上去以后,批量导入恢复正常。

              2)、B服务器,系统环境Win 2008 R2 64bit English,Office 2010 64bit

                   在此服务器上,程序更新上去以后 ,批量导入仍然不能使用。报如下错误信息:

                  The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine. 

                  检查IIS,应用程序池里已经启用了32位程序的使用。

                  依照网上查询的下载了新的引擎AccessDatabaseEngine.exe,这个是适用于32位的,又下载了AccessDatabaseEngine_X64.exe(适用于64位)的。

                  安装AccessDatabaseEngine.exe,提示服务器上当前安装的是64位的Office,不能安装此引擎。

                  安装AccessDatabaseEngine_X64.exe,可以正常安装,但使用批量导入,仍然报错。

                  报错误信息:The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine. 

                  考虑到Web程序是在32位的开发环境下开发的,应该使用32位的引擎。

                  经网上查询,采用下面方法安装适用于32位的AccessDatabaseEngine.exe,增加参数 /passive,可以绕开检查服务器上当前是64位Office 的检查

                  运行--->CMD,进入Dos命令行,进入AccessDatabaseEngine.exe所在文件夹,如下:

                 C:\xxx\AccessDatabaseEngine.exe  /passive

                  安装成功后,批量导入作业恢复正常

                  在控制面板里,查看,安装后呈现下面情况:

                   

转载于:https://www.cnblogs.com/SH170706/p/7814646.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值