• 64位环境中使用SQL查询excel的方式解决


    --64位环境中使用SQL查询excel的方式

    环境:

    OS:Windows Server 2008 R2 Enterprise

    MSSQL:Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)  (Build 7601: Service Pack 1)

     

    查询access的方式,请移步:在MSSQL中对ACCESS文件操作方式汇总

     

     

    因为SQL2005默认是没有开启'Ad Hoc Distributed Queries' 组件,开启方法如下

     

    --使用sa登录数据库

    EXEC sp_configure 'show advanced options', 1  --更改配置

    Go

    RECONFIGURE       --安装

    GO

    EXEC sp_configure 'Ad Hoc Distributed Queries', 1

    GO

    RECONFIGURE

    GO

    --查询配置值

    select value,value_in_use,name

    from sys.configurations

    where name ='Ad Hoc Distributed Queries'

     

     

    一、案情:执行Microsoft.Jet.OLEDB.4.0查询excel报错。

    代码:

    select *

     FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',  

    'Data Source=C:/Book1.xlsx;

    User ID=Admin;Password=;Extended Properties=Excel 8.0;')...a$ 

     

    --result:

    /*

    消息7308,级别16,状态1,第1 行

    因为OLE DB 访问接口'Microsoft.Jet.OLEDB.4.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。

     

    */

     

    二、缘由:

    --默认情况下,Microsoft OLE DB Provider for Jet 和Jet ODBC 驱动程序只能在为环境下运行,无法运行在位模式下。

     

    三、处理:

    --下载并安装Office System Driver Beta 64位驱动

    英文地址

    中文地址

     

    注意:如果本机已安装位的office组件,则要先进行卸载,再安装位的MADE2010。

     

    在安装AccessDatabaseEngine_X64.exe之后更换Microsoft.ACE.OLEDB驱动查询:

     代码:

    select @@VERSION,*

     FROM OpenDataSource('Microsoft.ACE.OLEDB.12.0',  

    'Data Source=C:/Book1.xlsx;

    User ID=Admin;Password=;Extended Properties=Excel 12.0;')...a$ 

     

    --结果如图所示:

     

     

    ——>总结:找对问题是关键,比如这里的MADE2010驱动。

  • 相关阅读:
    mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
    java中使用正则表达式
    Timer与ScheduledThreadPoolExecutor的比较
    Java同步块
    java中的浅拷贝与深拷贝
    java的关闭钩子(Shutdown Hook)
    JVM系列三:JVM参数设置、分析
    java虚拟机参数设置
    UTF-8编码规则(转)
    过滤3个字节以上的utf-8字符
  • 原文地址:https://www.cnblogs.com/accumulater/p/6214185.html
Copyright © 2020-2023  润新知