Partager via


公用資料夾複寫疑難排解 – 第 1 部分:疑難排解新變更的複寫

英文原文已於 2011 年 11 月 28 日星期一發佈

英文原文張貼於美國部落格:2006 年 1 月 17 日

注意:本部落格文章是<公用資料夾疑難排解>系列的第 1 部分。請務必查看本系列文章的第 2 部分 (可能為英文網頁)第 3 部分 (可能為英文網頁)第 4 部分 (可能為英文網頁)

簡介

此部落格文章系列之目的是做為公用資料夾複寫問題的疑難排解指南,它並不會確切地告訴您如何修正每個可能的複寫問題,但是會告訴您如何釐清每個可能的複寫問題,讓您可以將疑難排解專注在失敗點上。換個方式說,本文旨在引導您將「舊伺服器上的內容沒有複寫到新伺服器」這類的問題描述,變成範圍像是「舊的伺服器沒有回應新伺服器的狀態要求,因此新的伺服器不知道它遺失了資料,也沒有嘗試回填。這表示問題其實是在舊伺服器。」這類範圍較小的問題描述。本文也將說明如何找出幾項最常見的複寫問題。在詳細說明疑難排解之前,我想要針對我處理這些問題的一般方法,提供一個大略的說明。

公用資料夾複寫的最佳疑難排解工具是應用程式記錄檔。為了找出複寫問題,您必須能夠遵循複寫記錄檔中的事件,查看該程序確切失敗的地方。一般來說,您應將 [複寫內送] 和 [複寫外寄] 上的 [診斷記錄] 調至最大,以做為疑難排解的起點。每次儲存區傳送或接收複寫郵件時,就會記錄該效應的事件 (假設已開啟記錄功能)。各種複寫郵件都可以藉由事件描述中顯示的「類型」加以分辨。我偏好著重在「類型」而非事件識別碼,有幾個原因:

- Exchange 版本之間的事件識別碼變更。例如在 Exchange 5.5 中,輸出回填要求為 3014。在 Exchange 2000 和 2003 中,其為 3016。

- 每種類型的內送和外寄事件識別碼都不一樣。外寄階層郵件為 3018,而內送階層郵件為 3028。

- 即使狀態要求和狀態郵件是不同的郵件類型,但都使用相同的事件識別碼。因此,您無法單就事件識別碼加以分辨。

著眼在「類型」會簡單一些。您可以藉由檢查應用程式記錄檔,輕易找出與事件識別碼的關聯。類型只有 7 種,您可以從事件的「類別」看出郵件是外寄或內送。如果您著重在類型而非事件識別碼,則只要記住:

階層 - 0x2

內容 - 0x4

回填要求 - 0x8

回填回應 - 0x80000002 (用於階層) 或 0x80000004 (用於內容)

狀態 - 0x10

狀態要求 - 0x20

另請注意,複寫錯誤記錄幾乎沒什麼幫助。即使複寫運作正常,大部分的伺服器還是會產生許多複寫錯誤事件;例如,事件識別碼 3093 表示讀取內容時發生錯誤。在大部分的情況下,內容對複寫不會有影響,而可以忽略該錯誤。我建議將複寫錯誤記錄保留為「無」,除非您想要找什麼特別的內容,像是之前的此部落格文章 (可能為英文網頁)所述之問題。

疑難排解新變更的複寫

若要疑難排解公用資料夾複寫,您必須先熟悉當複寫運作時,預期應出現的一般郵件流程。根據該知識,您可以找出問題發生時的失敗點。在我討論如何疑難排解新變更的複寫之前,先來談談什麼是預期的行為。

階層複寫

每當建立或刪除資料夾,或是變更公用資料夾內容 (例如複本清單、用戶端權限、描述、系統管理備註或儲存限制) 時,就會進行新階層變更的複寫。請注意,這不包括具有郵件功能之資料夾中的電子郵件地址。電子郵件地址儲存在 Active Directory 的目錄物件中,所以變更電子郵件地址並不會引發階層複寫。只有變更儲存在公用儲存區本身的內容,才會引發階層複寫。

每隔 15 分鐘 (依預設),儲存區就會廣播對一或多個階層複寫郵件中資料夾內容所做的所有變更。在將 [複寫外寄] 功能調至 [最大] 的情況下,您會在已修改階層的伺服器上看到像是下列事件:

事件類型:資訊

事件來源:MSExchangeIS Public Store

事件類別:複寫外寄郵件

事件識別碼:3018

描述:

已發出外寄複寫郵件。

類型:0x2

郵件識別碼:<91ACCD0758385549A56A10971798985572D5@bilongexch1.bilong.test>

資料庫「預設儲存群組\公用資料夾儲存區 (BILONGEXCH1)」

CN 最小值:1-72CF,CN 最大值:1-72D3

RFI:1

1) FID:1-6994,PFID:1-1,位移:28

      IPM_SUBTREE\NewFolder

請注意描述開頭的「類型:0x2」,請將此識別為階層複寫郵件。

階層複寫郵件會從送出伺服器直接傳送到所有其他公用儲存區。新變更的複寫並沒有拓撲的概念。對階層所進行的所有變更,都會從進行變更的伺服器,直接傳送到具有與相同階層之相關公用儲存區的所有其他伺服器。每部其他的伺服器在成功處理內送複寫郵件時,都應該會記錄內送事件,顯示類型 0x2。

內容複寫

每當建立或刪除郵件或是郵件內容變更時,就會進行內容複寫。儲存區廣播資料夾內容變更的次數,可藉由變更該資料夾的複寫排程加以修改。但預設會每隔 15 分鐘廣播一次變更,就像階層一樣。內容複寫郵件可由事件描述中的類型 0x4 加以識別。再強調一次,新變更的廣播並沒有拓撲的概念。在任何指定的複本上進行資料夾內容修改後,該複本會將 0x4 郵件直接傳送到資料夾的所有其他複本。同樣地,每部接收伺服器在成功處理內送郵件時,應該都會記錄內送 0x4 事件。

疑難排解步驟

以下是複寫最基本的兩種情況。當新階層變更或新內容變更不是從一部伺服器複寫到另一部伺服器時,疑難排解非常簡單。

1. 伺服器有產生外寄複寫郵件嗎?

所以您在特定伺服器上對資料夾進行變更,或是新增內容至資料夾,而該內容未成功複寫到某其他伺服器。要回答的第一個問題是,目標伺服器有廣播該項變更嗎?在疑難排解時,請務必持續追蹤當您進行變更時所處理的伺服器。要達到此目的有幾個方法。在 ESM 中,您可以在「公用資料夾」節點上按一下滑鼠右鍵,再選擇 [連線至],指向特定的儲存區。ESM 大部分都會在指定的儲存區上進行所有變更,但請注意一項例外 - 用戶端權限。在 Exchange 2003 SP2 之前的版本中,當您透過 ESM 變更用戶端權限時,ESM 會嘗試對儲存資料夾複本的儲存區進行變更,即使權限因為會以資料夾內容的形式儲存在階層中而根本不需要這麼做。使用 ESM 的 2003 SP2 版本時,此情況會有所改變,現在的確會在您指向的階層進行變更。當您透過 ESM 進行變更以測試階層複寫時,應避免使用權限來進行測試,因為如此可能會很難預測要對哪個儲存區進行變更,除非您是從 2003 SP2 執行 ESM。如果您使用 Outlook,想要確認您變更的是哪個資料夾複本,可以使用 MFCMAPI 或類似的工具,檢視資料夾的 PR_REPLICA_SERVER 內容。如此會顯示 Outlook 用來存取該資料夾內容之伺服器的名稱。

如果問題資料夾的複寫排程為「永遠」(階層一律是這種情況),而您在 15 分鐘內沒有看到外寄 0x2 或 0x4,您就知道送出伺服器有問題了。如果伺服器沒有產生任何外寄階層或內容廣播,則複寫代理程式可能無法啟動。KB272999 中有說明其中一種常見的情況。這裡要注意的重點是 3079 事件:

事件識別碼:3079

來源:MSExchangeIS Public

類型:錯誤

類別:複寫錯誤

描述:

意外的複寫執行緒錯誤 0x3f0。

EcGetReplMsg

EcReplStartup

FReplAgent

即使當您裝載公用儲存區時,沒有開啟其他記錄功能,還是會記錄此資訊。如果 3079 包含 "EcReplStartup" 函數,這表示複寫代理程式無法啟動,而且必須先更正問題,並重新裝載儲存區,才會廣播新的變更。

當 Exchange 5.5 公用儲存區存在於組織中時,階層複寫也很容易發生某些權限問題。當 Exchange 2000 或 2003 伺服器將階層複寫郵件傳送至 Exchange 5.5 伺服器時,一定會從 ptagNTSD 內容 (以 SID 為基礎的 2000 型權限) 產生 ptagACLData 內容 (以 legacyExchangeDN 為基礎的 5.5 型權限)。這表示每個 SID 都必須轉換成 legacyExchangeDN。這個 SID 轉換成 legacyExchangeDN 時,可能會因為幾個原因而失敗。例如,若 SID 解析為多位使用者,就可能會產生像下列這樣的事件:

事件識別碼:9528

類別:一般

來源:MSExchangeIS

類型:錯誤

描述:

在 DS 中的 2 個使用者上發現 SID S-1-5-21-408248388-469072634-37170099-1391,所以儲存區無法將此 SID 對應至獨特的使用者。

包括的使用者為:

/DC=com/DC=company/CN=Users/CN=User1

/DC=com/DC=company/CN=Users/CN=User2

由於 SID 無法轉換成 legacyExchangeDN,所以儲存區將無法產生外寄階層廣播郵件。

2. 所設定的郵件地址是否為未收到變更的伺服器?

如果送出的伺服器產生了外寄郵件,下一步就是要確定其地址是設定到了未收到資料的伺服器。最簡單的確認方法,就是追蹤郵件。在郵件追蹤作業中,您可以只追蹤外寄複寫事件內報告的郵件識別碼。在 [郵件歷程記錄] 視窗中,可以看到 [收件者:] 行。如果此處未列出沒收到變更的儲存區,則還是應該要著重在送出的伺服器。有在組織中看到該伺服器嗎?該伺服器有其公用儲存區物件的電子郵件地址嗎?送出伺服器有看到該儲存區列於發生問題的資料夾中嗎?

3. 郵件成功寄到目的地伺服器了嗎?

一旦確認郵件地址設定為目的地伺服器,下一個要回答的問題就是 - 郵件是否成功寄達?您可以透過郵件追蹤來判斷此問題。如果郵件追蹤表示郵件已傳遞至儲存區,但您沒有看到確認收到郵件的內送複寫事件,請參閱此系列最後一篇文章 (可能為英文網頁)中的<常見問題>一節。

下一篇部落格文章:疑難排解現有資料的複寫 (可能為英文網頁)

- Bill Long

這是翻譯後的部落格文章。英文原文請參閱 Public Folder Replication Troubleshooting – Part 1: Troubleshooting the Replication of New Changes