使用傳輸伺服器上的佇列資料庫

 

適用版本: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

上次修改主題的時間: 2007-08-21

queue 是等候進入下一個處理階段之訊息的暫存位置。每個佇列代表傳輸伺服器以特定順序處理之郵件的邏輯集合。佇列只存在已安裝 Hub Transport server role 或 Edge Transport server role 的電腦上。

Microsoft Exchange Server 2007 使用單一可延伸儲存引擎 (ESE) 資料庫,以供佇列郵件儲存之用。ESE 舊稱 JET,是為 Exchange Server 的基礎資料庫結構定義低階 API 的方法。

如果 Hub Transport Server 或 Edge Transport Server 的佇列資料庫中有未傳遞的郵件,下列情形可能導致伺服器無法回應:

  • 當佇列中還有未傳遞的郵件時,Exchange 傳輸伺服器失敗。此外,您無法及時讓伺服器回復連線。

  • Exchange 傳輸伺服器有一個分散的佇列資料庫變得太大,因而耗盡所有可用的硬碟空間。

您可以將佇列資料庫及相關的交易記錄檔移至目標 Exchange 傳輸伺服器上的暫存位置、修復佇列資料庫、取代目標 Exchange 傳輸伺服器上現有的佇列資料庫,然後在 Exchange 傳輸伺服器上啟動已修復的佇列資料庫。此目標 ‏‏Exchange 傳輸伺服器可能位於 Exchange 組織內或不同的 Active Directory 目錄服務樹系中。

開始之前

若要執行下列程序,必須對您使用的帳戶委派下列項目:

  • Exchange Server 系統管理員角色

若要在已安裝 Edge Transport server role 的電腦上執行下列程序,則必須使用該電腦之本機 Administrators 群組成員的帳戶進行登入。

如需管理 Microsoft Exchange Server 2007 所需之權限、委派角色及權利的相關資訊,請參閱權限考量

當您在佇列資料庫及相關的檔案上執行工作時 (例如,將佇列資料庫移至目標伺服器或執行離線修復和磁碟重組),請確定您在佇列資料庫所在的目錄中有下列清單中的權限:

  • 網路服務:完全控制

  • 系統:完全控制

  • 系統管理員:完全控制

您選擇用來接收復原之佇列資料庫的目標 Exchange 傳輸伺服器,應該與來源 Exchange 伺服器安裝相同的 Exchange 2007 Service Pack 和安全性更新。

如果可以,您應該選取與來源伺服器具有相同傳輸伺服器角色的目標 Exchange 傳輸伺服器,來接收復原的佇列資料庫。當下列其中一種情況發生時,可能會出現意外的郵件傳遞行為:

  • 您在伺服器角色不同於來源伺服器的 Exchange 傳輸伺服器上,啟動復原的佇列資料庫。

  • 您在不同 Active Directory 樹系中的 Exchange 傳輸伺服器上,啟動復原的佇列資料庫。

例如,在信箱傳遞佇列中等待傳遞的郵件,現在可能需要使用遠端傳遞佇列來傳遞。原來的遠端位址現在可能變成本機,原來的本機位址可能變成遠端。預防郵件出現在無法存取之佇列中。您可能必須手動將郵件重新提交給分類程式。如需相關資訊,請參閱如何重新提交佇列中的郵件

在目標 Exchange 傳輸伺服器上復原佇列資料庫

佇列資料庫復原的基本步驟如下:

  1. 將佇列資料庫移至目標 Exchange 傳輸伺服器上的暫存位置。

  2. 使用 Exchange Server 資料庫公用程式 (Eseutil.exe),來執行佇列資料庫的復原。

  3. 使用 Eseutil,來執行佇列資料庫的離線磁碟重組。

  4. 準備以復原的佇列資料庫來取代目標 Exchange 傳輸伺服器上現有的佇列資料庫。

  5. 在目標 Exchange 傳輸伺服器上啟動修復的佇列資料庫。

將佇列資料庫移至目標傳輸伺服器上的暫存位置

依預設,佇列資料庫和交易記錄是位於 C:\Program Files\Microsoft\Exchange Server\TransportRoles\data\Queue 中。佇列資料庫位置和交易記錄位置是設定於 C:\Program Files\Microsoft\Exchange Server\Bin 中的 EdgeTransport.exe.config 應用程式組態檔中。QueueDatabasePath 參數可控制資料庫檔案的位置,QueueDatabaseLoggingPath 參數則會控制交易記錄的位置。

佇列資料庫是由下列檔案所組成:

  • Mail.que 佇列資料庫檔案。

  • Trn.chk 檢查點檔案。

交易記錄是由下列檔案所組成:

  • Trn.log 目前的交易記錄檔。

  • Trntmp.log 事先建立的下一個供應交易記錄檔。

  • Trnnnn.log 當 Trn.log 達到 EdgeTransport.exe.config 應用程式組態檔中 QueueDatabaeLoggingFileSize 參數所指定之大小上限時所建立的其他交易記錄檔。預設值是 5 MB。

  • Trnres00001.jrs 預留位置記錄檔。

  • Trnres00002.jrs 預留位置記錄檔。

  • Temp.edb 雖然不是交易記錄檔,但此佇列資料庫結構描述驗證器檔案會與交易記錄檔放在一起。

將佇列資料庫移至 Hub Transport Server 或 Edge Transport Server

  1. 在受影響之佇列資料庫所在的 Exchange 傳輸伺服器上,停止 Microsoft Exchange Transport 服務。

    • 在命令提示或 Exchange 管理命令介面中輸入下列命令:

      Net Stop MSExchangeTransport
      
  2. 將所有的佇列資料庫和交易記錄檔移至目標 Hub Transport Server 或 Edge Transport Server 上的暫存目錄。就此範例而言,該目錄為:C:\QueueRecovery。

  3. 修復受影響的 Exchange 2007 傳輸伺服器之後,在 Microsoft Exchange Transport 服務重新啟動時,即會建立新的佇列資料庫。這可能在佇列資料庫檔案複製到目標傳輸伺服器之後隨時發生。

如需佇列資料庫檔案的相關資訊,請參閱管理佇列資料庫

使用 Eseutil 執行佇列資料庫的復原

嘗試在目標傳輸伺服器上啟動佇列資料庫之前,應該先使用 Eseutil 來執行資料庫復原。因為佇列資料庫會使用循環記錄,您無法使用 Eseutil /C 還原模式,在資料庫中重新顯示舊的交易記錄。不過,您可以使用 Eseutil /R 復原模式來執行資料庫復原。您可以使用 Eseutil 來執行離線佇列資料庫維護和修復。

note附註:
Eseutil 位於 C:\Program Files\Microsoft\Exchange Server\Bin 中。此目錄定義於路徑中。因此,您可以只輸入命令,而不需指定完整路徑。

復原程序會讀取檢查點檔案,將交易記錄中未認可的交易認可到佇列資料庫。如果沒有檢查點檔案,則會從交易記錄中最舊的記錄檔項目開始重新顯示。

使用 Eseutil 執行佇列資料庫復原

  1. 在命令提示或 Exchange 管理命令介面中,開啟 C:\QueueRecovery 目錄。

  2. 執行下列命令:

    Eseutil /r Trn /d. /8
    

    Trn 表示 3 個字元的記錄基本檔名。/8 設定快速修復的 8 KB 資料庫分頁大小。/d. 表示要復原的資料庫存在目前目錄中。

    note附註:
    大型佇列資料庫的資料庫復原可能需要較長的時間。

如需如何使用 Eseutil 執行資料庫復原的相關資訊,請參閱 Eseutil /R 復原模式

使用 Eseutil 執行佇列資料庫的離線磁碟重組

執行佇列資料庫的復原之後,最好也在資料庫上使用 Eseutil /D 磁碟重組模式來執行離線磁碟重組,以保持佇列資料庫的整體健康狀況和效能。ESE 資料庫的離線磁碟重組會收回未使用的資料庫空白空間,並可減少資料庫檔案的大小。

使用 Eseutil 執行佇列資料庫的離線磁碟重組

  1. 在命令提示或 Exchange 管理命令介面中,開啟 C:\QueueRecovery 目錄。

  2. 執行下列命令:

    Eseutil /d mail.que
    
    note附註:
    大型佇列資料庫的資料庫磁碟重組可能需要較長的時間

如需如何使用 Eseutil 執行離線資料庫磁碟重組的相關資訊,請參閱 Eseutil /D 磁碟重組模式

準備以復原的佇列資料庫來取代目標 Exchange 傳輸伺服器上現有的佇列資料庫

您可以使用復原的佇列資料庫,來覆寫目標 Exchange 傳輸伺服器上的佇列資料庫。不過,這樣會清除目標 Exchange 傳輸伺服器上之佇列中的所有現有郵件。為了安全地啟動復原的佇列資料庫,您必須先在目標 Exchange 傳輸伺服器上執行這些步驟:

  1. 禁止讓新的郵件進入佇列,並允許傳遞現有的郵件。

  2. 監視信箱傳遞佇列和遠端傳遞佇列,直到所有郵件均已傳遞為止。

  3. 重新提交,或暫停並匯出無法存取之佇列中任何您想要儲存的郵件。

  4. 繼續或匯出毒藥郵件佇列中任何您想要儲存的郵件。

  5. 修改 Exchange 傳輸伺服器上的郵件到期逾時,以保留復原之佇列資料庫中的郵件。

禁止讓新的郵件進入目標 Exchange 傳輸伺服器上的佇列,並允許傳遞現有的郵件

  • 在命令提示或 Exchange 管理命令介面中,執行下列命令:

    Net Pause MSExchangeTransport
    

監視目標 Exchange 傳輸伺服器上的信箱傳遞佇列和遠端傳輸佇列,直到所有郵件均已傳遞為止

  • 使用佇列檢視器或在 Exchange 管理命令介面中使用 Get-Queue 指令程式,監視目標 Exchange 傳輸伺服器上的傳遞佇列。等到伺服器上的任何傳遞佇列中均已無郵件 (會以郵件計數為 0 來表示)。

重新提交,或暫停並匯出目標 Exchange 傳輸伺服器之無法存取之佇列中任何您想要儲存的何郵件

  1. 若要重新提交存在於無法存取之佇列中的郵件,請使用 Exchange 管理命令介面,在目標 Exchange 傳輸伺服器中執行下列命令:

    Retry-Queue -Identity "Unreachable" -Resubmit $True
    
  2. 使用佇列檢視器,來暫停您要從無法存取之佇列中匯出的任何郵件。

  3. 若要從無法存取之佇列中將所有暫停的郵件匯出到目錄,並以 InternalMessageID.eml 格式自動命名郵件檔,請在 Exchange 管理命令介面中執行下列命令:

    Get-Message -Queue "Unreachable" | Export-Message -Path "<ExistingLocalDirectory>"
    

如需如何重新提交郵件的相關資訊,請參閱如何重新提交佇列中的郵件

如需如何暫停郵件的相關資訊,請參閱如何暫停訊息

如需如何匯出郵件的相關資訊,請參閱如何從佇列匯出郵件

重新提交或匯出目標 Exchange 傳輸伺服器之毒藥郵件佇列中任何您想要儲存的郵件

  1. 若要繼續傳遞毒藥郵件佇列中的郵件,請執行下列其中一個步驟:

    • 在佇列檢視器中,選取毒藥郵件佇列,再選取郵件,然後在執行窗格中,選取 [繼續]。

    • 在 Exchange 管理命令介面中,執行下列命令:

      Get-Message -Queue "Poison" | ft Identity
      Resume-Message <IdentityofPoisonMessage>
      
  2. 若要從毒藥郵件佇列中將所有暫停的郵件匯出到目錄,並以 InternalMessageID.eml 格式自動命名郵件檔,請在 Exchange 管理命令介面中執行下列命令:

    Get-Message -Queue "Poison" | Export-Message -Path "<ExistingLocalDirectory>"
    
note附註:
毒藥郵件佇列包含在伺服器失敗之後,被判斷為對 Exchange 2007 系統有害的郵件。郵件的內容和格式本身可能有害,或純粹是因為代理程式設計不良,導致 Exchange 伺服器在處理據稱有害的郵件時失敗。如果您不確定毒藥郵件佇列中的郵件是否安全,請將郵件匯出到檔案以進行檢驗。如果您決定從毒藥郵件佇列中移除郵件,直接移除即可,而不需傳送未傳遞回報 (NDR)。NDR 可能會包含原始郵件的內容。毒藥郵件佇列中的郵件已處於擱置狀態。因此,在匯出之前不必暫停。毒藥郵件佇列無法以 Retry-Queue 指令程式加上 Resubmit 參數,重新提交。若要重新提交毒藥郵件佇列中的郵件,請使用佇列檢視器來繼續傳遞郵件,或使用 Resume-Message 指令程式。

如需如何繼續傳遞郵件的相關資訊,請參閱如何繼續郵件

在目標 Exchange 傳輸伺服器上修改郵件到期逾時,以保留復原的佇列資料庫中的郵件

  • 在 Exchange 管理命令介面中執行下列命令:

    Set-TransportServer -MessageExpirationTimeout <LongerTimeOutIntervalIndd.hh:mm:ssFormat>
    

    任何未傳遞的郵件預設會連同 NDR 一起退回給寄件者,然後從佇列中刪除。當下列其中一種情況發生時,您必須增加郵件到期逾時間隔:

    • 您嘗試復原的佇列資料庫已離線兩天以上。

    • 佇列資料庫在復原之後未於兩天內將郵件傳遞完畢。

    這導致佇列資料庫啟動之後,或當重新啟動的資料庫傳遞舊郵件時,無法立即刪除郵件。

如需郵件到期的相關資訊,請參閱管理郵件重試、重新提交及到期間隔

在目標 Exchange 傳輸伺服器上啟動修復的佇列資料庫

在目標 Exchange 傳輸伺服器上啟動復原的佇列資料庫

  1. 在命令提示或 Exchange 管理命令介面中,於目標 Exchange 傳輸伺服器上執行下列命令:

    Net Stop MSExchangeTransport
    
  2. 以 "C:\QueueRecovery" 中的所有檔案,覆寫目標 Exchange 傳輸伺服器上所有未使用的現有佇列資料庫檔案和交易記錄檔。依預設,佇列資料庫和交易記錄是位於 C:\Program Files\Microsoft\Exchange Server\TransportRoles\data\Queue。

  3. 在命令提示或 Exchange 管理命令介面中,執行下列命令:

    Net Start MSExchangeTransport
    

復原後的組態工作

在目標 Exchange 傳輸伺服器上啟動復原的佇列資料庫之後,郵件就會開始流動。下列清單描述可能發生的潛在問題:

  • 如果復原的佇列資料庫來自失敗的 Exchange 2007 伺服器,請準備處理毒藥郵件佇列中的郵件。您必須判斷毒藥郵件佇列中的每個郵件是否真的造成 Exchange 2007 伺服器失敗,或者只是不小心將郵件放入毒藥郵件佇列中。您可以選擇繼續傳遞郵件或匯出郵件,以進行檢驗。如果您不確定毒藥郵件佇列中的郵件是否安全,請匯出郵件以進行檢驗。如果您決定從毒藥郵件佇列中移除郵件,直接移除即可,而不需傳送 NDR。NDR 可能包含有害郵件的內容。

  • 準備處理無法存取之佇列和傳遞佇列中陷入「重試」狀態的郵件。您應該手動重新提交這些郵件。

  • 如果您決定移除發生傳遞問題的郵件,則必須決定在移除郵件時是否傳送 NDR。如果您移除郵件並傳送 NDR,則 NDR 郵件本身也需要傳遞。再者,NDR 郵件本身可能就有傳遞問題。您可以選擇移除有問題的郵件時不要傳送 NDR。如需如何移除郵件的相關資訊,請參閱如何移除佇列中的郵件

  • 您應該考慮是否將復原的佇列資料庫永久保存在目標 Exchange 傳輸伺服器上,或在傳遞所有受困的郵件之後,以新的佇列資料庫加以取代。當您啟動復原的佇列資料庫之後,新的郵件會立即進入佇列,成為 Exchange 傳輸伺服器之正常郵件傳遞活動的一部份。如果您決定使用全新版本來取代佇列資料庫,必須遵循下列步驟:

    1. 暫停 Microsoft Exchange Transport 服務,讓現有的郵件完全送出。在暫停期間,不會接受任何新的郵件。

    2. 停止 Microsoft Exchange Transport 服務。

    3. 刪除所有的佇列資料庫檔案和交易記錄檔。

    4. 啟動 Microsoft Exchange Transport 服務。

相關資訊

如需相關資訊,請參閱下列主題: