求教一个烦人的ACE 12.0的问题
问题描述:本地机器,Windows身份验证方式登录;
1、首先安装好ACE 12.0的驱动,然后打开调用的开关:
exec sp_configure 'show advanced options',1 reconfigure
go
exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure
go
2、执行:
select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0','Excel 8.0;HDR=Yes;IMEX=1;
Database=D:\query\test.xlsx',[sheet1$])
有正确的结果:
a b
1 2
3、执行:
select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0','Excel 8.0;HDR=Yes;IMEX=1;
Database=D:\佣金制作\固网_201801\A_数据准备_2_业务数据\BSS融合群组信息.xlsx',[成员$])
报错:
链接服务器"(null)"的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 返回了消息 "Unexpected error from external database driver (1)."。
消息 7311,级别 16,状态 2,第 1 行
无法获取链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 的架构行集 "DBSCHEMA_COLUMNS"。该访问接口支持该接口,但使用该接口时返回了失败代码。
(说明:此表数据仅13万行,摘取前3行制作测试表格可以正常调用)
4、再次执行:
select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0','Excel 8.0;HDR=Yes;IMEX=1;
Database=D:\query\test.xlsx',[sheet1$])
报错:
消息 7399,级别 16,状态 1,第 2 行
链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 报错。提供程序未给出有关错误的任何信息。
消息 7303,级别 16,状态 1,第 2 行
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 的数据源对象。
5、在不重启机器的情况下,反复尝试:关闭SQL重开、释放SQL内存、注销重登陆、重新安装MDAC驱动等多种方法均无效果,均为报错。
6、重启机器,从第2步开始执行,仍然有正确结果,继续往下,仍然报错,始终无法将目标数据导入。
说明:因为涉及到一个复杂的佣金核算系统,大量的Excel数据需要反复多次导入,因此不考虑手工处理Excel数据为Txt文本格式的解决方法(此例仅为抽取其中一表说明问题而已);只考虑找到问题根结之所在,彻底解决后,仍然走带参调用存储过程
实现Excel数据导入的方案。
请高手指点,谢谢了~