使用OpenRowSet导入Excel时出错

时间:2013-10-23 16:45:01

标签: sql excel sql-server-2008-r2

我正在尝试从我的磁盘C:上的Excel文件导入数据但是当我执行查询时

SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml;HDR=YES;Database=C:\Hola.xlsx', 'SELECT * FROM [Ripley$]') 

我收到此错误

  

Msg 7308,Level 16,State 1,Line 1
  OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”不能用于分布式查询,因为提供程序配置为在单线程单元模式下运行

我试过这个

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO

EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

但它不起作用。有人可以帮帮我吗?

我正在使用SQL Server 2008 R2和Office 2010

1 个答案:

答案 0 :(得分:0)

不需要连接字符串中的SELECT语句,您可以将其删除:

SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml;HDR=YES;Database=C:\Hola.xlsx', [Ripley$]')

您可能也不需要Xml部分(但我不确定这是否会导致错误):

SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=YES;Database=C:\Hola.xlsx', [Ripley$]')