这两天做一个关于excel批量导入到sql server 数据库的小工具。
在网上广泛的搜索了一下发现并不难,最简单的一种方式就是用sql中自带的一种导入工具,只要用一句t-sql语句就可以搞定了。语句如下:
SELECT * into Student FROM OpenDataSource
( 'Microsoft.Jet.OLEDB.4.1,
'Data Source= "f:/student.xls";User ID=Admin;Password=;Extended properties="Excel 8.0;HDR=YES;IMEX=1"')
...Sheet1$
如法炮制之后发现,语句不可以执行,提示错误信息:“sql server 阻止了对组建 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
于是运行sql 语句启用Ad Hoc Distributed Queries:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
运行依旧出错:
当我查阅n资料后发现可能是access 版本问题,查询了自己机器上的版本是2000的,于是把接口改变成 Microsoft.Jet.OLEDB.3.51。开始还是提示错误:
测试过n多方法,也搜索过很多答案,结果还是没有给解决了,很是郁闷啊。
由此也发现在学校里面我们学的太狭隘了,知识面不够广,层次不够深。所以遇到问题只好去百度,百度出来一大堆不知道是正确的还是错误的方法,然后一个个进行实践。幸运的人很快的发现了答案,不幸的人在苦苦寻找着但未果。这里要说的是网络是个好东西,但是未必可以让你高效办公。
同时也希望各位高手可以帮我看看这个问题到底是怎么回事?
注:在导入的过程中我的excel文件是关闭的;