SQL链接EXCEL文件

sql中使用opendatasource查询excel文件的语法

本文介绍在MSSMS中通过SQL语句查询Excel的方法。

访问Excel主要是通过Office提供的ACE数据源来完成这个操作,使用opendatasource来实现访问Excel。即在MSSMS中执行如下命令:

select * from opendatasource('Microsoft.ACE.OLEDB.12.0','data source="Excel文件绝对路径";Extended Properties=Excel 12.0')...SheetName$ --其中…和$不能省略

如果执行该语句的时候出现"SQL Server 阻止了对组件 ‘Ad Hoc Distributed Queries’ 的 STATEMENT ‘OpenRowset/OpenDatasource’ 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 ‘Ad Hoc Distributed Queries’。有关启用 ‘Ad Hoc Distributed Queries’ 的详细信息,请参阅 SQL Server 联机丛书中的 “外围应用配置器”。"则可以在执行该语句之前执行
 exec sp_configure 'show advanced options',1 reconfigure
 exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure
 前一句是打开显示高级设置,后一条是打开’Ad Hoc Distributed Queries‘。执行这两条以后在执行访问Excel的语句就没问题了。如果执行了这两条设置语句,最后一定要记得再执行exec sp_configure ‘Ad Hoc Distributed Queries’,0 reconfigure和exec sp_configure ‘show advanced options’,0 reconfigure来关闭这两个设置,因为这个设置如果设置为打开状态对于数据库是极其不安全的。
  链接:此篇文章出处

关于【无法创建链接服务器 “(null)” 的 OLE DB 访问接口 “MSDASC” 的实例。】

SQL Server 2008读取EXCEL数据时,可能会报这个错误:无法创建链接服务器 “(null)” 的 OLE DB 访问接口 “MSDASC” 的实例。

  1. 此错误主要是在使用代码读取数据时发生:
    insert into 数据库表名
    select * from OpenDataSource (‘Microsoft.Ace.OLEDB.12.0’,‘Data Source=“d:\Excel表名.xlsx”;Extended properties=“Excel 12.0;HDR=Yes”’)…[sheet1$]
  2. 使用“导入工具”读取Excel时,不会发生此报错。
    3. 方法:将SQL Server(MSSQLSERVER)和SQL Full-Filter Deamon Launcher(MSSQLSERVER)两个服务的登录身份改为LocalSystem就可以了,但是困扰了我很久,在此留个记录备用,同时也帮助那些和我一样碰到这个头疼问题的战士们。
  3. 登陆身份的修改:在配置管理器重操作。
    链接:无法创建链接服务器 “(null)” 的 OLE DB 访问接口 “MSDASC” 的实例。
    SQL链接EXCEL文件_第1张图片
    解决方案:
    在服务里找到以下两个服务:
    SQL链接EXCEL文件_第2张图片
    然后把登陆信息改成本地,改完之后需要重启服务:
    SQL链接EXCEL文件_第3张图片

你可能感兴趣的