延遲連結對於 OAB 產生程序的影響...

英文原文已於 2011 年 9 月 14 日星期三發佈

在 Exchange 中,通訊群組或具備電子郵件功能的安全性群組中如有包含延遲連結,都會對產生 OAB (離線通訊錄) 的程序造成影響,致使其無法正確地複寫。這個問題與 OAB (離線通訊錄) 的產生程序運作方式相關,從 Windows 2000 推出 AD 之後就一直存在,但從未被發現過。

有幾種方法可以修正這個問題。您可以選擇刪除受影響的群組,然後再重新加以建立,或是重新架設包含延遲連結之群組所在的 Active Directory 磁碟分割。

何謂延遲連結?

我認為下列這段文字,對於 Active Directory 中的「連結」有著相當不錯的解釋:

在 Active Directory 中,有些物件間的交叉參考會因為可用性或管理目的而需要反向參考。舉例來說,假設 managedBy 為物件屬性,您可以透過 ObjectA 判別 ObjectA 由 ObjectB 管理。同樣地,在某些情況下,您也可以透過 ObjectB 判別 ObjectB 所管理的物件 (例如 managedObjects 屬性的值)。Active Directory 會維護相互參考之物件間的參考完整性,確保物件在目錄樹狀結構中移動時,仍能保有其和其他物件的參考關係,而此參考關係則是透過連結的屬性達成。

兩個連結的屬性在架構中皆會標以相同的連結對組識別碼,其中一個會標示為正向連結,另一個則會標示為反向連結。例如在 managedBy / managedObjects 連結對組中,managedBy 為正向連結。因此,若要調整使用者物件的 managedObjects 屬性,您必須針對您要在使用者之 managedObjects 值中新增或移除的各個物件修改其 managedBy 值。反向連結屬性會在使用者動作要求時加以計算。

若要尋找 ObjectB 所管理的所有物件,將會針對所有連結對組為 managedBy / managedObjects,且反向連結屬性指向 ObjectB 的所有記錄檢查連結。這些記錄的連結對組會提供 ObjectB 所管理之各記錄 (物件) 的資料庫識別碼。

通訊清單成員資格會以成對的正向連結與反向連結執行。反向連結物件會儲存 isMemberOfDl 屬性,正向連結的 member 屬性則是一個包含多個值的屬性,可以讓使用者同時隸屬於多個通訊群組。反向連結因為無法限制誰能夠建立連結與各種物件之間的關係,因此必須包含多個值。

「延遲連結」屬於反向連結的屬性,包含了不復存在於 Active Directory 中之物件的 DN (辨別名稱)。這些問題起因於通用類別目錄伺服器 (及 GC 上的唯讀資料分割) 未從發生問題之網域的可寫入網域控制站收到健全的複寫內容。這也是當 GC 持有損毀的延遲連結值時,可寫入的 DC 未必會發生同樣問題的原因所在。

問題徵兆

OAB 產生程序會使用 QueryRows 函數從 Active Directory 傳回屬性值。若傳回的資料無效,即可能會將錯誤事件傳回應用程式事件檢視器,同時亦不會完成 OABGen 程序。

此問題相關的錯誤事件:

事件來源

事件識別碼

事件字串

MSExchangeSA

9126

計算通訊清單「全域通訊清單」的離線通訊清單時,OALGen 發生嚴重錯誤 8004010e。

MSExchangeSA

9330

OABGen 存取「全域通訊清單」的 Active Directory ContosoHUB03 時發生錯誤 8004010e (內部識別碼 500139c)。

MSExchangeSA

9339

在產生「全域通訊清單」的離線通訊清單時,Active Directory 'HubServer' 傳回錯誤 8004010e。Active Directory 傳回的最後一位收件者是「使用者名稱」。將不會產生此離線通訊清單。

在 Justin Turner 最近所發佈的下列這篇 KB 文章中,已有提供延遲連結在 Exchange 中之應用方式的詳細資訊:

因屬性中包含過時或錯誤的資料所導致的 Exchange 離線通訊錄 (OAB) 產生失敗:錯誤碼為 8004010e 的事件 9126、9330 與 9339
https://support.microsoft.com/kb/2553698/zh-tw (可能為英文網頁)

疑難排解

Active Directory 工程師通常會在內部定期使用 repadmin 命令列工具,執行清除延遲物件這項十分簡單的程序。根據 Microsoft ADRAP (AD 風險評估計劃 (AD Risk Assessment Program) (可能為英文網頁),是 Premier 客戶的專屬服務) 的報告顯示,假使您的 Active Directory 環境中存有任何延遲物件,即使像清除延遲物件這類大家所熟知的程序,也很難從 AD 端找出任何的延遲連結。不過下列網站上的 Exchange 工具 oabvalidate.exe,卻可以找出延遲連結:https://oabvalidate.codeplex.com/ (可能為英文網頁)。此工具的作者 (Bill Long) 會隨時在 Codeplex 更新這項工具。OABValidate 工具的體積很小 (小於 800KB),只會針對指定的 DC 執行,而且執行時間也不會太長 (視 AD 環境中的物件數量而定),可以列出內含需要解決之延遲連結問題的群組。

安裝並開始執行 Exchange,同時環境中也有延遲連結的問題時,到底會出現何種狀況?您將會收到 OAB 產生錯誤,指出您有延遲連結的問題需要解決。

Mike O’Neill

這是翻譯後的部落格文章。英文原文請參閱 How Lingering Links can impact OAB generation process...