安装SQL Server2K可能引发一个严重问题
2024-08-31 00:48:27
供稿:网友
安装sql server之后可能
会导致访问邮箱失败
article last modified on 2002-1-21
--------------------------------------------------------
the information in this article applies to:
microsoft active directory service interfaces, version 2.5 microsoft data access components version 2.6
--------------------------------------------------------
现象
frontendserver是exchange 2000服务器;
从某个时候起,在这台机器上调用微软的cdo或者cdoex访问exchange邮箱发生了异常!而且adsi也工作不正常。
从外表上看,没有任何错误的迹象。
重现步骤如下:
ø vb中创建一个应用程序;
ø 引用cdoex.dll;
ø 代码写入:
set omsg = createobject("cdo.message")
omsg.datasource.open(“http://backendserver/public”)
则在第二行得到这样的错误:
run-time error ‘-2147221164(80040154)’:
无法向注册表写入项
frontendserver 配置:
windows advanced server 2000 内部版本号 2195:service pack 2
ie 版本:5.00.3315.1000 更新版本:sp2
cdoex.dll的版本号:6.0.4417.0
它所处的位置:c:/program files/common files/microsoft shared/cdo
原因
首先在frontendserver 安装了sql server 2000之前,我们可以使用cdoex的idatasource.open打开用户邮箱的:
_connectionptr pcon = null;
ccomptr <cdo::ifolder>pfldr;
ccomptr <cdo::idatasource>psource;
hr=pfldr.cocreateinstance(l"cdo.folder");
pfldr->get_datasource(&psource);
hr=psource->open(bstrurlinbox,
(idispatch*)pcon,
admoderead,
adfailifnotexists,
adopensource,
bstruserdomainaccount,
bstruserpwd);
但是安装了sql server之后,mdac就被更新到了version 2.6!!
由于microsoft的过错,早期的一些mdac组件被mdac 2.6删除或者被覆盖掉了!!
而运行idatasource.open,是需要引用mdac 2.5的这些被删除了的组件的,所以就会报出“class not registered”的错误。
此时,如果运行下面的代码:
set con = createobject("adodb.connection")
con.provider = "adsdsoobject"
con.open "ads provider"
最后一行会失败并报错:run-tim error 429 'activex component can't create object'
这种情况被新闻组的人们称之为“adsi toasting ado”!!
这就是一个非常严重的问题了。你的要使用到以前的ado的接口的程序可能都不行了!
所以,安装了sql server 2000之后,请一定从下列站点下载最新的mdac安装包或者补丁。
http://www.microsoft.com/data/download_26sp1.htm
解决这个cdoex的问题,就是下载并安装了mdac 2.6 sp1 (2.61.7326.6).exe就可以了。
小结
在任何机器上安装sql server 2000时,都请注意这个问题!
一旦发现原来可以运行的程序现在爆出一些莫名其妙的错误,请先更新这台机器上的mdac!打sql server 2000 sp1应该也可以,我想。
参考文献:
1. 《prb: adsi 2.5 and mdac 2.6 compatibility issues (q275917)》
2. 《info: determining which version of adsi is installed (q216290)》
菜鸟学堂: