安裝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)》
 
菜鳥學堂: