日期:2014-05-18  浏览次数:20588 次

读Excel数据时报错
环境是: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文件时,报错了
SQL code

SP_CONFIGURE 'show advanced options',1
GO
RECONFIGURE
GO
SP_CONFIGURE 'Ad Hoc Distributed Queries',1
GO
RECONFIGURE
GO

select * 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的读写权限。

------解决方案--------------------
SQL code


使用sql语句读取access和excel数据/mssql与access excel互导2011年12月30日 星期五 9:44通过此方法可以实现express版本从access或excel导入数据到sql中




读取access

SELECT  * 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)





读取Excel

SELECT * 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','