今天弄了下在MSSQL里读取EXCEL的实验,环境是MSSQL2008,结果发现有很多问题,下面一一道来:
在使用MSSQL读取EXCEL会出现俩个问题:
第一个问题:
启用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
这个问题在跨服务器查询中,也经常会出现,解决方案同样是开启服务即可,因为在MSSQL08中,木有可操作的外围配置器界面,所以需要手工命令进行开启与关闭。
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=192.168.210.114,1433;User ID=sa;Password=123456
).database.dbo.tableName
--启用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
第二个问题:在做好上述的问题后,发现还是不能正常的读取EXCEL,运行读取EXCEL的语句后,会提示:
消息 7403,级别 16,状态 1,第 1 行
尚未注册 OLE DB 访问接口 "MICROSOFT.JET.OLEDB.4.0"。
这样的错误信息。
从网上找到了解决方案:需要安装MDAC_TYP2.8.EXE这个文件,那么这个是神马东东呢?
MDAC_TYP2.8.EXE:MDAC_TYP.exe包括所有ADO需要的运行库,如果你要保证程序在所有机器上都正确运行,这个文件是少不了的,当然这个文件非常大。一般Win2000以上的系统都具备,主要是用户在Win98上安装某些软件,就需要安装这个文件了
真是让人内流满面啊 ,坑爹啊 ~~ 顺着这个路线我发现了,其实这个MDAC_TYP.exe在我们的window2003或者XP系统中已经包含了,如果我们需要的时候,我们要将他们重新安装一下即可。
解决方法:
1:安装:
MDAC组件,在Windows XP SP2以后的版本及Windows 2003中已经包含了这个组件,如果直接使用MDAC_TYP.EXE可能会无法安装,这时需要采用下面的方法。在安装了XP sp2或Windows 2003的机器上修复MDAC的解决方法如下:在“我的电脑”中找到Windows系统目录下INF文件夹中的MDAC.INF文件,在其上点击右键,在弹出的菜单中选择“安装”,当提示定位文件时,您可以先将其指向windows\servicepackfiles\i386,当需要XP的CD时,指向XP的安装盘上的\i386文件夹即可。(如果您的XP安装包中包括了SP2,您可以直接指向XP的安装盘上的i386文件夹就可以了。如果您的SP2是从网上升级的,可能需要先指向C:\windows\servicepackfiles\i386文件夹,此处假定您的XP安装在C:\windows文件夹下)。将上述两个组件下载安装后,估计您的数据库问题就会解决了。
2:修复:
1、下载mdac_repair.zip,
下载地址为 http://www.9box.net/upload/File/2009/07/07/20090707092734114297.zip
2、将mdac_repair.zip解压缩到 C:\ mdac_repair 文件夹
3、用鼠标右键点击 “mdac.inf”文件,点击 “安装”
4、在接下来的安装过程中,如果提示 需要插入光盘或者找不到路径,这类提示无论出现几次,都一律将路径指向mdac_repair.zip解压缩后的文件夹,本文中为C:\ mdac_repair。
5、可能会提示需要重新启动操作系统,可以点击否,不用重新启动操作系统;
重启之后即可正常访问使用了!