SQL Server 2005 访问接口 "Microsoft.ACE.OLEDB.12.0" 报错 问题

近日安装了SQL Server Express SP3,尝试用以下代码导入Excel 2003格式文件。

select * from OpenRowSet
('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\test.xls','select * from [sheet1$]')

出现以下错误(其他错误按照提示操作即可):

消息 7399,级别 16,状态 1,第 1 行
链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 报错。访问被拒绝。
消息 7301,级别 16,状态 2,第 1 行
无法从链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 获取所需的接口("IID_IDBCreateCommand")。

 

或者类似错误信息,比如找不到列等等,都是“访问被拒绝”原因造成的。看起来有点像引擎的访问权限不够。

http://wandejun1012.iteye.com/blog/1571118 中提到:

将SQL Server(MSSQLSERVER)和SQL Full-Filter Deamon Launcher(MSSQLSERVER)两个服务的登录身份改为LocalSystem

安装的时候默认是network service。不过本人觉得这样修改治标不治本,而且有安全隐患。

 

http://topic.csdn.net/u/20090602/17/2b46432b-7770-4444-982c-b81d442f34b9.html

这上面有关于这方面的讨论,也有其他解决方法。上面37楼指出的方法多人反馈可行:

发现根本原因了:management studio--->服务器对象-->链接服务器-->Microsoft.Jet.OLEDB.4.0-->右键属性-->访问接口选项:全都不选

 

今天我安装SQL Server Express SP4解决问题。估计是SP3与Excel 2007引擎的兼容性不是那么好,SP4就解决了这个问题。而通过右键我的电脑-管理-服务,查看SQL SERVER的服务运行账户,仍然是network service。

 

--补充:后来在另外一台电脑上(Windows XP SP3)安装又不行。

112213303312

你可能感兴趣的:(sql server 2005)