在sql server 2008中执行excel文件时出错

时间:2013-07-24 18:00:42

标签: sql sql-server sql-server-2008

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

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

发生以下错误:

  

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

实际上我根据这些查询搜索了很多回答。但是我没有得到可靠的结果。

到目前为止我做了什么,

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

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位

1 个答案:

答案 0 :(得分: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文件无法在其他位置打开。