【发布时间】:2013-07-24 18:00:41
【问题描述】:
我在 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 行无法获取 来自 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 位
【问题讨论】:
-
是否有名为 sheet1 的工作表?
-
是的。名称 Sheet1 在 Excel 工作表中。
-
这些区分大小写吗?你上面有sheet1,不是Sheet1,你过去能查询到这台服务器上的任何Excel表格吗?
-
是的。我检查了 case censitive。但仍然出现错误。我在我以前的笔记本电脑(即 32 位处理器)上使用了这种类型的相同 sql 服务器查询。但这是一个 Windows 8 64 位。而我的 ms office 是 32 位的。
标签: sql sql-server sql-server-2008