程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 安裝SQL Server 2000可能引發一個嚴重問題

安裝SQL Server 2000可能引發一個嚴重問題

編輯:關於SqlServer

現象

我的這台機器上調用微軟的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

原因

首先在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安裝包或者補丁。

解決這個CDOEX的問題,就是下載並安裝MDAC 2.6 SP1 (2.61.7326.6).exe。

小結

在任何機器上安裝SQL Server 2000時,都請注意這個問題!

一旦發現原來可以運行的程序現在爆出一些莫名其妙的錯誤,請先更新這台機器上的MDAC或者打SQL Server 2000 SP1。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved