【问题标题】:error while executing excel file in sql server 2008在 sql server 2008 中执行 excel 文件时出错
【发布时间】: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


【解决方案1】:

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

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 文件时,它无法在其他地方打开。

【讨论】:

  • 我也执行了这个存储过程,但是问题还是出现了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 2023-03-04
  • 2017-01-20
  • 1970-01-01
  • 2014-01-20
相关资源
最近更新 更多