2013-07-18 47 views
0

我想读取数据从Excel中通过SQL Server 2008的文件链接服务器错误:无法2010年的数据通过SQL服务器来读取Excel 2008

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
     'Excel 8.0;Database=C:\Hierarchy.xlsx', 
     'SELECT * FROM [Group$]') 

它给了我一个奇怪的错误:

OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)" returned message "Unspecified error". 
Msg 7303, Level 16, State 1, Line 1 
Cannot initialize the data source object of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)". 

Excel工作表格式正确,路径正确。 不知道为什么它给了我一个错误。

回答

0

尝试使用ACE OLEDB和Excel版本12.0

实施例:

SELECT * FROM 
OPENROWSET 
(   

     'Microsoft.ACE.OLEDB.12.0', 
     'Data Source=C:\Hierarchy.xlsx;Extended Properties="Excel 12.0;HDR=YES"', 
     'SELECT * FROM [Group$]' 
) 
+0

发生以下错误:链接服务器的OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”“(null)”返回消息“无法找到可安装的ISAM。”。 消息7303,级别16,状态1,行1 无法初始化链接服务器“(null)”的OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象。 –

+0

尝试从此[URL]安装ACE提供程序(http://www.microsoft.com/en-us/download/details.aspx?id=13255) – Vasanth

+0

请注意,如果您是Excel,此答案是一个好答案版本是2007或更高版本。如果它是2003年或早于您想要使用Jet连接,如在您的原始帖子中。 –

1

我发现此解决方案:

我保存在向后兼容现有的文件,然后触发此之一:

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
'Excel 12.0;HDR=NO;Database=D:\Hierarchy.xls;', 
[Group$]) 

不知道为什么它的作品和其他人不是,可能有人有一个很好的身份证关于这个。