【问题标题】:Linked Server Error: Unable to read excel 2010 data through sql server 2008链接服务器错误:无法通过 sql server 2008 读取 excel 2010 数据
【发布时间】:2013-07-17 22:00:09
【问题描述】:

我正在尝试通过 SQL Server 2008 从 excel 文件中读取数据。

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 表格格式正确,路径正确。 不知道为什么它给我一个错误。

【问题讨论】:

    标签: sql-server excel import


    【解决方案1】:

    尝试使用 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$]'
    )
    

    【讨论】:

    • 给出以下错误:链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”返回消息“找不到可安装的 ISAM。”。消息 7303,级别 16,状态 1,第 1 行无法为链接服务器“(null)”初始化 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象。
    • 尝试从URL安装ACE提供程序
    • 请注意,如果您的 Excel 版本是 2007 或更高版本,则此答案是一个很好的答案。如果是 2003 年或更早,您想使用 Jet 连接,如您原来的帖子中所述。
    • 可安装的ISAM错误是因为它应该是Extended Properties="Excel 12.0 Xml;HDR=YES"'
    • 是excel 2010版本。
    【解决方案2】:

    我找到了这个解决方案:

    我将现有文件保存为向后兼容,然后触发这个:

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

    不知道为什么它有效而其他无效,可能有人对此有一个好主意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-10
      相关资源
      最近更新 更多