环境是:xp 个人版 sp3
数据库:Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)   Nov 24 2008 13:01:59   Copyright (c) 1988-2005 Microsoft Corporation  Standard Edition on Windows NT 5.1 (Build 2600: Service Pack 3) 现象:通过下面语句读取Excel文件时,报错了SP_CONFIGURE 'show advanced options',1
GO
RECONFIGURE
GO
SP_CONFIGURE 'Ad Hoc Distributed Queries',1
GO
RECONFIGURE
GOselect * from OPENROWSET(N'MICROSOFT.JET.OLEDB.4.0',
'Excel 8.0;HDR=YES;DATABASE=D:\abc\2012.xls',Sheet1$)exec sp_configure 'Ad Hoc Distributed Queries',0
GO
reconfigure
GO
SP_CONFIGURE 'show advanced options',0
GO
RECONFIGURE
GO错误描述:
Msg 7399, Level 16, State 1, Line 2
The OLE DB provider "MICROSOFT.JET.OLEDB.4.0" for linked server "(null)" reported an error. The provider did not give any information about the error.
Msg 7303, Level 16, State 1, Line 2
Cannot initialize the data source object of OLE DB provider "MICROSOFT.JET.OLEDB.4.0" for linked server "(null)".翻译成中文大概就是:
链接服务器"(null)"的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 返回了消息 "未指定的错误"。
------------------------------------------------------------------------------------------------------------
谁能帮个忙哦,是什么原因,外围配置的启用OPENROWSER和OPENDATASOURCE支持是开启的。Excel文件的安全配置也赋予了EveryOne的读写权限。

解决方案 »

  1.   

    使用sql语句读取access和excel数据/mssql与access excel互导2011年12月30日 星期五 9:44通过此方法可以实现express版本从access或excel导入数据到sql中
    读取accessSELECT  * FROM   OPENROWSET( 'Microsoft.Jet.OLEDB.4.0',  'D:\nongfuitcom.mdb'; 'Admin'; 'access密码', accessTableName)  access密码改为你的access密码 Admin为你的access用户名 一般为admin, accessTableName为access的表名 (注意复制后要把多余的空格去掉)
    导入数据库
    INSERT INTO dt_articletableName(ClassId,Title,Keyword,Tags,[Content])
    SELECT  classId,标题,关键词,tags,内容 FROM   OPENROWSET( 'Microsoft.Jet.OLEDB.4.0',  'D:\test.mdb'; 'Admin'; '', CONTENT)读取ExcelSELECT * FROM OPENROWSET( 'MICROSOFT.JET.OLEDB.4.0','Excel 8.0;IMEX=1;HDR=YES;DATABASE=D:\nongfuitcom.xls',[sheet1$]) MSSQL导出到access insert into  OPENROWSET('Microsoft.Jet.OLEDB.4.0','D:\nongfuitcom.mdb';'admin';'', dt_tbname)  select  id, title   from  dbo.dt_sqltbname
      注意:若执行过程中出现SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。的错误,解决方法如下:启用Ad Hoc Distributed Queries:
    exec sp_configure 'show advanced options',1
    reconfigure
    exec sp_configure 'Ad Hoc Distributed Queries',1
    reconfigure
    使用完成后,关闭Ad Hoc Distributed Queries:
    exec sp_configure 'Ad Hoc Distributed Queries',0
    reconfigure
    exec sp_configure 'show advanced options',0
    reconfigure   *******************网络收集*******************************************Transact-SQL语句(查询分析器)进行导入导出:1、在SQL SERVER里查询access数据:
     引用内容Select * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名其中c:\DB.mdb,为access数据库的路径;表名,改为你要查询的表的名字。其他默认不变。2、将access导入SQL server:Select * INTOnewtable FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0','Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名
    3、将SQL SERVER表里的数据插入到Access表中:insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名 (列名1,列名2) select 列名1,列名2  from  sql表OPENROWSET: Insert INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名) Select * FROM sqltablename示例:insert into  OPENROWSET('Microsoft.Jet.OLEDB.4.0','C:\db.mdb';'admin';'', Test) select id,name from Test二、SQL SERVER 和EXCEL的数据导入导出
    1、SQL SERVER 和EXCEL的数据导入导出
    Select * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
    下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
    Select * FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions2、将Excel的数据导入SQL server :
    Select * into newtable FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
    实例:
    Select * into newtable FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions3、将SQL SERVER中查询到的数据导成一个Excel文件:
    T-SQL代码:
    EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
    参数:S 是SQL服务器名;U是用户;P是密码
    说明:还可以导出文本文件等多种格式实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'EXEC master..xp_cmdshell 'bcp "Select au_fname, au_lname FROM pubs..authors orDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'4、在SQL SERVER里往Excel插入数据::
    insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)T-SQL代码:
    Insert INTO 
    OPENDATASOURCE('Microsoft.JET.OLEDB.4.0','Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]  (bestand, produkt) VALUES (20, 'Test')在VB6中应用ADO导出EXCEL文件代码:
    Dim cn  As New ADODB.Connection
    cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
    cn.execute "master..xp_cmdshell 'bcp "Select col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'" 
     
      

  2.   

    EXCEL表格中 内容格式是否错误,对应数据库中的列名是否正确
      

  3.   

    1、文件是不是加密码了
    2、xls要关闭,不能打开
    3、是否允许OPENROWSET支持如果2005,到sql server 外围应用服务器 ---功能外围应用配置 --找到即席运程查询 --
    启用openrowset 及opendatasourse
      

  4.   

    SQL SERVER 2008  环境 用这个 
    SELECT * FROM OPENROWSET( 'MICROSOFT.ace.oledb.12.0','Excel 8.0;IMEX=1;HDR=YES;DATABASE=E:\2232.xls',[查询$])
    没有问题用 “MICROSOFT.JET.OLEDB.4.0” 这个 我这边也有问题一直没有找问题所在。
      

  5.   

    如果 服务器对象---> 链接服务器--->下没有 “MICROSOFT.JET.OLEDB.4.0” 或“MICROSOFT.ace.oledb.12.0” 到官方 下载AccessDatabaseEngine (32位或64位的),然后安装。再调用