设为首页 收藏本站
查看: 1025|回复: 0

[经验分享] 在 SQL Server 中查询EXCEL 表中的数据遇到的各种问题

[复制链接]

尚未签到

发表于 2017-12-14 07:57:12 | 显示全部楼层 |阅读模式
[sql] view plain copy

  • SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\KK.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
  问题:
  消息 15281,级别 16,状态 1,第 1 行
  SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
  解决:
[sql] view plain copy  https://code.csdn.net/assets/CODE_ico.pnghttps://code.csdn.net/assets/ico_fork.svg

  • exec sp_configure 'show advanced options',1
  • reconfigure
  • GO
  • exec sp_configure 'Ad Hoc Distributed Queries',1
  • reconfigure
  • GO


  • SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\KK.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]


  • --exec sp_configure 'Ad Hoc Distributed Queries',0
  • --reconfigure
  • --GO
  • --exec sp_configure 'show advanced options',0
  • --reconfigure
  • --GO
  问题:
  消息 7399,级别 16,状态 1,第 1 行
  链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。提供程序未给出有关错误的任何信息。
  消息 7303,级别 16,状态 1,第 1 行
  无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。
  解决:
  对象资源管理器——>服务器对象——>连接服务器——>访问接口——>Microsoft.Jet.OLEDB.4.0——>(右键属性,接口选项全不启用)
DSC0000.jpg

  问题:
  消息 7302,级别 16,状态 1,第 1 行
  无法创建链接服务器 "(null)" 的 OLE DB 访问接口 "MSDASC" 的实例。
  解决:
  将SQL Server(MSSQLSERVER)和SQL Full-Filter Deamon Launcher(MSSQLSERVER)两个服务的登录身份改为LocalSystem
DSC0001.jpg

  问题:
  链接服务器"(null)"的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 返回了消息 "外部表不是预期的格式。"。
  消息 7303,级别 16,状态 1,第 1 行
  无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。
  解决:
  Microsoft.Jet.OLEDB.4.0是Microsoft Jet引擎,这适用于2003版本。在2007中,微软对其旗下 Access 与 Excel 的主要文件格式进行修改,并且重命名为 .accdb(Access 2007 数据库文件)与 .xlsx(Excel 2007 文件),因此未被 Microsoft Jet 引擎所支持,不过微软也很快的提出了Microsoft Office 2007 Desktop Drivers: Data Connectivity Components 来支持,目前的解决方法就是把连接字符串中的数据提供者改为 Microsoft.ACE.OLEDB.12.0。
  下载安装: Microsoft Office 2007 Desktop Drivers: Data Connectivity Components   http://www.microsoft.com/zh-cn/download/details.aspx?id=23734

  SELECT * FROM OpenDataSource( 'Microsoft.ACE.OLEDB.12.0','Data Source="D:\KK.KK.xlsx";User>  问题:
  消息 7314,级别 16,状态 1,第 1 行
  链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 不包含表 "Sheet1$"。该表不存在,或者当前用户没有访问该表的权限。
  
  最终解决:
  在网上搜索一番,终于找到原因了!
  原来我的excel列表名字不是Sheet1,而是 KK! 所以上面的所有  Sheet1$ 都改为 KK$!!
DSC0002.jpg DSC0003.jpg

  完整代码如下(两中写法):
[sql] view plain copy  https://code.csdn.net/assets/CODE_ico.pnghttps://code.csdn.net/assets/ico_fork.svg

  • --


  • exec sp_configure 'show advanced options',1
  • reconfigure
  • GO
  • exec sp_configure 'Ad Hoc Distributed Queries',1
  • reconfigure
  • GO


  • SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\KK.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[KK$]
  • SELECT * FROM OpenDataSource( 'Microsoft.ACE.OLEDB.12.0','Data Source="D:\KK.xlsx";User ID=Admin;Password=;Extended properties=Excel 12.0')...[KK$]

  • SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\KK.xls','SELECT * FROM [KK$]')
  • select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=D:\KK.xlsx;HDR=YES','SELECT * FROM [KK$]')


  • exec sp_configure 'Ad Hoc Distributed Queries',0
  • reconfigure
  • GO
  • exec sp_configure 'show advanced options',0
  • reconfigure
  • GO


  • --
  ------------------------------------------------------------------------------------------------------------------------------------------------------------
  ------------------------------------------------------------------------------------------------------------------------------------------------------------
  成功之后,试回原来的操作:
  1. 以下这个对Microsoft.Jet.OLEDB.4.0没有影响,对 Microsoft.ACE.OLEDB.12.0 有影响(接口选项要全启用):
  对象资源管理器——>服务器对象——>连接服务器——>访问接口——>Microsoft.Jet.OLEDB.4.0——>(右键属性,接口选项全不启用)
  2. 以下两个服务身份由LocalSystem个改回 NetWord Service ,对Microsoft.Jet.OLEDB.4.0没有影响,对 Microsoft.ACE.OLEDB.12.0 有影响
  将SQL Server(MSSQLSERVER)和SQL Full-Filter Deamon Launcher(MSSQLSERVER)两个服务的登录身份改为LocalSystem

  SELECT * FROM OpenDataSource( 'Microsoft.ACE.OLEDB.12.0','Data Source="D:\KK.xlsx";User>  错误:
  消息 7302,级别 16,状态 1,第 1 行
  无法创建链接服务器 "(null)" 的 OLE DB 访问接口 "MSDASC" 的实例。
  select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=D:\KK.xlsx;HDR=YES','SELECT * FROM [KK$]')
  错误:
  消息 7302,级别 16,状态 1,第 1 行
  无法创建链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 的实例。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-423894-1-1.html 上篇帖子: SQL Server 查询性能优化 下篇帖子: SQL Server 错误:15023(创建对于用户失败)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表