首页 > 数据库 > SQL Server > 正文

安装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)》

 
菜鸟学堂:
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表