如何查看服务器上安装了哪些版本的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

 

<think>好的,我需要帮助用户解决“Microsoft.ACE.OLEDB.15.0未注册”的问题。根据用户提供的引用资料,问题通常是由于缺少对应的Access Database Engine驱动程序引起的。首先,我要确认不同版本驱动对应的OLEDB提供程序版本。 引用[1]提到需要安装Microsoft Access Database Engine 2010可再发行组件来使用“Microsoft.ACE.OLEDB.12.0”提供程序。而引用[2]中的问题涉及“Microsoft.ACE.OLEDB.16.0”,这可能与较新的版本有关。用户的问题是关于15.0版本的,但根据微软的发布历史,ACE.OLEDB版本通常与发布年份对应,例如12.0对应2010,15.0可能属于2013版本,但需要确认。 不过,查看引用[3]和[4],微软可能没有单独发布15.0版本驱动程序,通常较新的驱动会向后兼容。例如,安装较新的2016或2019版本的Access Database Engine可能同时支持12.0、15.0和16.0提供程序。因此,建议用户安装最新版本的Access Database Engine,比如2016或2019版,因为它们可能包含旧版本的提供程序支持。 此外,需要注意位数匹配问题。用户的应用程序如果是32位的,必须安装32位(x86)的驱动,即使系统是64位的。引用[4]中提到用户下载了x64版本,但有时可能需要x86版本。因此,需要提醒用户根据应用程序的架构选择合适的驱动版本。 最后,用户可能需要通过官方渠道下载正确的安装包,并确保安装时关闭所有Office应用程序,以避免冲突。总结解决方案步骤:确认应用程序位数,下载对应版本的Access Database Engine,安装并重启应用。</think>### Microsoft.ACE.OLEDB.15.0未注册的解决方案 #### 问题原因 此错误通常是由于缺少对应的数据库引擎驱动版本不兼容导致。具体来说: 1. **驱动未安装**:系统未安装支持`Microsoft.ACE.OLEDB.15.0`的Access Database Engine。 2. **版本冲突**:应用程序位数(32位/64位)与安装的驱动位数不一致[^4]。 3. **旧版本限制**:某些旧版驱动可能不支持较新的OLEDB提供程序[^1]。 --- #### 解决步骤 1. **确认应用程序位数**: - 若应用程序为32位,需安装32位(x86)驱动;若为64位,则安装64位(x64)驱动。 2. **下载并安装对应驱动**: - **Access Database Engine 2010**(支持12.0及部分旧版本): [官方下载地址](https://www.microsoft.com/en-us/download/details.aspx?id=13255)。 - **Access Database Engine 2016/2019**(推荐,兼容12.0-16.0)[^2]: [官方下载地址](https://www.microsoft.com/en-us/download/details.aspx?id=54920)。 3. **安装注意事项**: - 关闭所有Office程序,避免安装冲突。 - 若已安装旧版驱动,需先卸载再安装新版本。 4. **验证安装**: - 重启应用程序,检查是否仍报错。 - 若问题依旧,尝试通过代码或连接字符串指定提供程序版本(例如强制使用`Microsoft.ACE.OLEDB.16.0`)。 --- #### 补充说明 - 若系统已安装Office 2013+,可能已集成`Microsoft.ACE.OLEDB.15.0`,但仍需确保位数匹配[^3]。 - 对于服务器环境,建议通过管理员权限静默安装驱动: ```cmd AccessDatabaseEngine.exe /quiet ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值