初次用SqlServer查看本地的Excel文件时需要注意的地方
日常用到通过SqlServer 读取Excel文件的案例 ,记录下来
文件路径 :C:\Users\Administrator\Desktop\icd10.xls
1.查询语句:
SELECT *
FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source="C:\Users\Administrator\Desktop\icd10.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 联机丛书中的 "外围应用配置器"。
解决方法:
exec sp_configure 'show advanced options',1
reconfigure
GO
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
GO
可以在查询后可以再设置回去
exec sp_configure 'show advanced options',0
reconfigure
GO
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
GO
其次会报错:
消息 7399,级别 16,状态 1,第 2 行
链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。提供程序未给出有关错误的任何信息。
消息 7303,级别 16,状态 1,第 2 行
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。
解决方法:
对象资源管理器——>服务器对象——>连接服务器——>访问接口——>Microsoft.Jet.OLEDB.4.0——>(右键属性,接口选项全不启用)

全部去掉√即可
问题:
消息 7302,级别 16,状态 1,第 1 行 无法创建链接服务器 "(null)" 的 OLE DB 访问接口 "MSDASC" 的实例。
解决:
将SQL Server(MSSQLSERVER)和SQL Full-Filter Deamon Launcher(MSSQLSERVER)两个服务的登录身份改为LocalSystem
问题:
链接服务器"(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 ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
问题:
消息 7314,级别 16,状态 1,第 1 行 链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 不包含表 "Sheet1$"。该表不存在,或者当前用户没有访问该表的权限。
最终解决:
在网上搜索一番,终于找到原因了!
原来我的excel列表名字不是Sheet1,而是 KK! 所以上面的所有 Sheet1$ 都改为 KK$!!
完整代码如下(两中写法):
- --
- 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
- --
-- 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 ID=Admin;Password=;Extended properties=Excel 12.0')...[KK$]
错误:
消息 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" 的实例。
初次用SqlServer查看本地的Excel文件时需要注意的地方的更多相关文章
- C#导出数据到CSV和EXCEL文件时数字文本被转义的解决方法
今天写C#导出datagrid数据到csv格式文件的时候,发现不管怎么尝试,凡是单元格里面全是数字的单元格,在用Excel打开的时候,都被自动转义成数据格式.数据查看极其不方便.最后google了一下 ...
- .Net读取Excel文件时丢失数据的问题 (转载)
相信很多人都试过通过OleDB读取Excel文件,这种方法效率十分高,只是有一点会让人十分头痛,就是当一列中既有混合型数据,又有纯数据时,往往容易丢失数据. 百度过后,改连接字符串 “HDR=YES; ...
- HTML 表单 存为EXCEL文件时 中文显示乱码
在做宣传品发放系统时,需求要把数据库查询的记录生成表单并转存excel文件. 在转存的EXCEL文件中文显示乱码,表格和其他字符正常,检查后发现是创建EXCEL文件打开模式不对 之前: myfile ...
- sqlserver错误"试图扩大物理文件时,MODIFY FILE 遇到操作系统错误 112(磁盘空间不足。)。"处理
正常还原的时候报错: Microsoft SQL-DMO (ODBC SQLState: 42000)---------------------------试图扩大物理文件时,MODIFY FILE ...
- 将SQLServer结果导出为excel文件
相信大家常常会遇到将SqlServer查询结果导出到Excel的问题.如果导出的次数少,直接“Save Results As...”就是了:但是当要分别在每个表取样,那就相当麻烦了.今天就为大家提供一 ...
- 连接Excel文件时,未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
问题与解决 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 错误. string strCon = " Provider = Microsoft.Jet.OL ...
- 在浏览器中将表格导入到本地的EXCEL文件,注意控制内存
if ($export_flag == 1) { $rr = $this->mdl->test($test); header("Content-Type: application ...
- mssql sqlserver 使用脚本输出excel文件的方法分享
转自:http://www.maomao365.com/?p=6683 摘要: 下文将分享使用sql脚本输出excel的方法 此脚本可以应用于 表或视图生成excel的方法,若需使用sql脚本输出ex ...
- POI3.8解决导出大数据量excel文件时内存溢出的问题
POI3.8的SXSSF包是XSSF的一个扩展版本,支持流处理,在生成大数据量的电子表格且堆空间有限时使用.SXSSF通过限制内存中可访问的记录行数来实现其低内存利用,当达到限定值时,新一行数据的加入 ...
随机推荐
- R语言:数据的分割-计算-整合(split-apply-aggregate)
当获取到原始数据时,我们通常的做法是对该数据进行分割成小片段,然后对各小片段进行计算统计,最后整合成最终的数据.这是统计学里数据处理的一般规律. R语言为我们提供了相应的函数来分别处理这三个阶段任务. ...
- Leetcode 912. Sort an Array
class Solution: def sortArray(self, nums: List[int]) -> List[int]: return sorted(nums)
- 深入理解java虚拟机-第三章
1.概述 2.对象已死吗? 引用计数器 给对象添加一个引用计数器,每当有引用时,计数器加1,引用失效时,计数器减1:任何时刻计数器为0的对象就是不可能再被使用的. 若对象是循环引用,则无法处理.JVM ...
- Python之matplotlib库
知识结构 pyplot.plot()流程 1. _axes.py中plot()函数说明 a. 调用说明 plot([x], y, [fmt], data=None, **kwargs) p ...
- 使用OpenCV对图像进行缩放
OpenCV:图片缩放和图像金字塔 对图像进行缩放的最简单方法当然是调用resize函数啦! resize函数可以将源图像精确地转化为指定尺寸的目标图像. 要缩小图像,一般推荐使用CV_INETR_A ...
- opencv 学习笔记集锦
整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的.如果有好的资源,也欢迎介绍和分享. 1:OpenCV学习笔记 作者:CSDN数量:55篇博文网址: ...
- 51nod 1298 圆与三角形
给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于0). 输入 第1行:一个数 ...
- DbEntry 简单实现
在着手编码之前首先安装DbEntry DbEntry.Net.4.1.Setup.zip 在建立类库时选择 DbEntryClassLibrary 如图 DbEntryClassLibrary1 中建 ...
- restful规则
参考连接:https://blog.igevin.info/posts/restful-api-get-started-to-write/#url_rules https://juejin.im/po ...
- UGUI 分页渐变居中效果
代码相当冗长,仅作自己记录 在此分页上修改的https://blog.csdn.net/qinyuanpei/article/details/49781133 using UnityEngine;us ...