【发布时间】:2013-12-13 17:33:20
【问题描述】:
我正在尝试运行以下查询:
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=C:\Somefile.xlsx',
'SELECT * FROM [Sheet$]')
但我收到此错误:
Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".
我尝试了以下方法:
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
当我转到“服务器对象”->“链接服务器”->“提供程序”时,会列出 Microsoft.ACE.OLEDB.12.0。
安装了Acess Database Engine x64,所有Office产品都是64位的,我的SQL Server也是64位的。
如果重要,所有用户都可以访问 Users 文件夹中的 Temp 文件夹。
(这些都是我在这个问题的类似答案中找到的所有建议)
编辑:使用 SQL Server 2014。
【问题讨论】:
-
我对这些东西不够熟悉,无法记住我脑海中出现的错误消息,所以,如果这无关紧要,对不起:是因为你运行工作簿时它是打开的吗?
-
工作簿未打开。
-
当你以系统管理员身份运行时它是否工作?
-
不行,还是不行。
-
工作表命名为“Sheet”而不是“Sheet1”是否正确?
标签: sql-server excel openrowset