2

我在 SQL 查询中尝试了以下查询

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=c:\generalholiday.xls','select * from [sheet1$]')

发生以下错误:

用于链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”返回消息“Microsoft Access 数据库引擎找不到对象 'sheet1$'。确保该对象存在并且您拼写了它的名称和路径名正确。如果“sheet1$”不是本地对象,请检查您的网络连接或联系服务器管理员。”。消息 7350,级别 16,状态 2,第 1 行无法从链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”获取列信息。

实际上,我根据此查询搜索了很多答案。但我没有得到可靠的结果。

到目前为止我所做的,

我安装了 64 位的 access 数据库引擎,并运行以下查询

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
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 

但仍然发生上述错误。找到这个解决方案让我头疼一整天。

请给我这个问题的解决方案。

我正在使用 SQL Server 2008(64 位)和 MS Office 32 位

4

1 回答 1

0

我记得最初在我的服务器上设置了类似的错误,但我不记得是哪位解决了它,但我相信它可能一直在运行以下内容:

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

另外,如果我没记错的话,当您尝试查询 Excel 文件时,它无法在其他地方打开。

于 2013-07-24T18:20:58.460 回答