如何查看服务器上安装了哪些版本的Microsoft.ACE.OLEDB驱动

在做一个把 windows server 2008 上的应用迁移到windows server 2016的项目时,碰到了一个使用了Microsoft.ACE.OLEDB驱动的asp项目,在win 2016上运行始终报错。

摘录出来的代码如下:

<%

Dim xlsConn
set xlsConn = Server.CreateObject("adodb.connection")
'Dim resAs New ADODB.Recordset

Dim sFileName
'sFileName = "1.txt"
sFileName="C:\C\inetpub\wwwroot\asp\1.xlsx"

xlsConn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Persist Security Info=False; Data Source=" & sFileName & "; Extended Properties='Excel 12.0;HDR=Yes'"
'xlsConn.Open "Provider=Microsoft.ACE.OLEDB.16.0; Persist Security Info=False; Data Source=" & sFileName & "; Extended Properties='Excel 12.0;HDR=Yes'"

xlsConn.Close()
set xlsConn = nothing
%>

代码运行后,始终提示:

ADODB.Connection 错误 '800a0e7a' 

未找到提供程序。该程序可能未正确安装。 

/asp/oledb_test.ASP,行 22 

该服务器上已经安装了office 2016版本的AccessDatabaseEngine_x64.exe。

由于在旧服务器windows 2008上安装是的office 2007版本的AccessDatabaseEngine.exe(x86)。一开始怀疑是因为安装的是office 2016的原因,导致Windows 2016服务器上的oledb的提供程序已经不是Microsoft.ACE.OLEDB.12.0,而是Microsoft.ACE.OLEDB.16.0了。

后来发现,安装了 office 2016版本的AccessDatabaseEngine_x64.exe后,服务器上会同时存在两个oledb的驱动提供程序:

Microsoft.ACE.OLEDB.12.0和Microsoft.ACE.OLEDB.16.0。

如下截图:

(安装了Microsoft Access database engine 2016 x64)

(服务器上的oledb的驱动提供程序)

也就是说,安装了office 2016版本的 MADE 后,“Microsoft.ACE.OLEDB.12.0”提供程序仍然是可以使用的。

继续查找原因,发现在旧服务器windows 2008上,该 asp 程序使用的应用程序池里“启用32位应用程序”的值是“True”,而且在旧服务器windows 2008上安装的 office 2007版本的 MADE 是x86的。

在新服务器Windows 2016上安装的office 2016版本的 MADE 是64位的,而应用程序池里“启用32位应用程序”的值仍然被设置为“True”。所以就导致程序一直报错:“未找到提供程序”。

修正方式:

将应用程序池的“启用32位应用程序”的值设置为“False”。

下面是在服务器上检查安装了哪些oledb 驱动的提供程序的方法:

1. 在桌面上建立一个空白的文本文件;

2.修改该文件的文件名为 1.udl;

3.鼠标双击1.udl;

在弹出来的界面上可以看到“提供程序”。点击“提供程序”可以看到oledb驱动的提供程序的列表。

设置完成后,使用记事本打开1.udl,可以看到数据库连接的代码。

以下为使用office 2016的oledb 驱动提供程序读取 excel 数据的数据库连接字符串:

[oledb]
; Everything after this line is an OLE DB initstring
Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\C\inetpub\wwwroot\asp\1.xlsx;Extended Properties="Excel 12.0;HDR=Yes";Persist Security Info=False

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值