Microsoft.ACE.OLEDB.12.0 错误

Posted

技术标签:

【中文标题】Microsoft.ACE.OLEDB.12.0 错误【英文标题】:Microsoft.ACE.OLEDB.12.0 Error 【发布时间】:2013-05-01 14:43:56 【问题描述】:

经过数小时的搜索和空无一物,我决定寻求更多帮助。

我正在运行以下命令

select  * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel
12.0;Database=C:\SAMPLE.xlsx;HDR=YES', 'SELECT * FROM [sheet1$]')

我收到其他人收到的正常错误。

Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)"
reported an error. The provider did not give any information about the error.

Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider 
"Microsoft.ACE.OLEDB.12.0" for linked server "(null)". 

目前我正在运行 Windows Server 2003 R2 64 位并使用 Windows Office 2007。我在管理帐户下运行,所以我知道这与我看到的 TEMP 权限问题无关。

sp_configure 'show advanced options', 1; 
RECONFIGURE; 
sp_configure 'Ad Hoc Distributed Queries', 1; 
RECONFIGURE; 
GO 

USE [master] 
GO 
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO 
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 
GO 

已运行。

起初我遇到了错误,当我尝试其他命令时,它开始挂断我,我通过添加 -g512; 解决了这个问题。在启动参数前面并解决了问题。但是,现在我又回到了原来的错误。

我已经卸载并重新安装了 Access 驱动程序,但也没有用。任何建议将不胜感激。

【问题讨论】:

你的工作表真的叫“工作表”吗?我会期待“Sheet1”或某个数字。 调整后为Sheet1。 【参考方案1】:

试试这个:

SELECT
*
FROM
OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0','Data source = "C:\SAMPLE.xlsx"; Extended proprietes="Excel 12.0";HDR=YES;IMEX=1;')...[sheet1$]

【讨论】:

以上是关于Microsoft.ACE.OLEDB.12.0 错误的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft.ACE.OLEDB.12.0 提供程序未注册

Microsoft.Jet.OLEDB.4.0 与 Microsoft.ACE.OLEDB.12.0,我应该使用哪个?

Microsoft.ACE.OLEDB.12.0 未在 x86 上注册

Microsoft.ACE.OLEDB.12.0 尚未注册”错误

microsoft.ace.oledb.12.0 提供程序未注册

C#:使用 Microsoft.ACE.OLEDB.12.0 连接到 dbf 文件