トランスポート サーバー上のキュー データベースの操作

 

適用先: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

トピックの最終更新日: 2007-08-21

キューは、次の処理段階に移るのを待っているメッセージが一時的に保持されている場所です。各キューは、Exchange トランスポート サーバーが特定の順序で処理するメッセージの論理的なセットを表します。キューが存在するのは、ハブ トランスポート サーバーの役割またはエッジ トランスポート サーバーの役割がインストールされているコンピュータのみです。

Microsoft Exchange Server 2007 は、単一の Extensible Storage Engine (ESE) データベースを使用してキューを格納します。以前は JET と呼ばれていた ESE は、Exchange Server の基本的なデータベース構造に対する下位レベルの API を定義する手段です。

以下のシナリオでは、未配信のメッセージを含むキュー データベースが配置されているハブ トランスポート サーバーまたはエッジ トランスポート サーバーが応答しなくなる可能性があります。

  • キューに未配信のメッセージがある状態で、Exchange トランスポート サーバーにエラーが発生する場合。さらに、このサーバーを適切な時期にオンラインに戻すことができない場合。
  • Exchange トランスポート サーバー上の断片化されたキュー データベースが大きくなりすぎて、ハード ディスク ドライブの空き領域をすべて消費している場合。

キュー データベースおよび関連のトランザクション ログ ファイルを対象の Exchange トランスポート サーバー上の一時的な場所に移動し、キュー データベースを修復して、この Exchange トランスポート サーバー上の既存のキュー データベースを置き換えてから、この Exchange トランスポート サーバー上の修復済みキュー データベースを起動することができます。この対象の Exchange トランスポート サーバーは、Exchange 組織内または異なる Active Directory ディレクトリ サービス フォレスト内に配置することができます。

開始する前に

以下の手順を実行するには、使用するアカウントに次の役割が委任されている必要があります。

  • Exchange サーバー管理者の役割

エッジ トランスポート サーバーの役割がインストールされているコンピュータで以下の手順を実行するには、そのコンピュータのローカルの Administrators グループのメンバであるアカウントを使用してログオンする必要があります。

アクセス許可、役割の委任、および Microsoft Exchange Server 2007 を管理するために必要な権限の詳細については、「アクセス許可に関する考慮事項」を参照してください。

対象サーバーにキュー データベースを移動する、オフラインでの修復と最適化を実行するなど、キュー データベースとその関連ファイルに対してタスクを実行する場合は、キュー データベースが存在するディレクトリで以下のアクセス許可が必要です。

  • ネットワーク サービス : フル コントロール
  • システム : フル コントロール
  • 管理者 : フル コントロール

回復済みキュー データベースを受け取るように選択した対象の Exchange トランスポート サーバーは、元の Exchange サーバーと同じ Exchange 2007 サービス パックおよびセキュリティ更新プログラムをインストールしている必要があります。

これを実行できる場合、元のサーバーと同じトランスポート サーバーの役割を持つ回復済みキュー データベースを受け取るように、対象の 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 に配置されます。キュー データベースの場所とトランザクション ログの場所は、EdgeTransport.exe.config アプリケーション構成ファイルで構成されます。このファイルは、C:\Program Files\Microsoft\Exchange Server\Bin に配置されます。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   トランザクション ログ ファイルではありませんが、このキュー データベース スキーマ検証ファイルは、トランザクション ログ ファイルと共に配置されます。

ハブ トランスポート サーバーまたはエッジ トランスポート サーバーにキュー データベースを移動するには、次の操作を行います。

  1. 影響を受けたキュー データベースが配置されている Exchange トランスポート サーバー上の Microsoft Exchange Transport サービスを停止します。

    • コマンド プロンプトまたは Exchange 管理シェルで、次のコマンドを入力します。

      Net Stop MSExchangeTransport
      
  2. 対象のハブ トランスポート サーバーまたはエッジ トランスポート サーバー上の一時ディレクトリにキュー データベースとトランザクション ログ ファイルをすべて移動します。この例では、一時ディレクトリは 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 と共にメッセージに返され、キューから削除されます。以下の条件のいずれかに当てはまる場合、メッセージの有効期限を延長する必要があります。

    • 回復するキュー データベースが 2 日以上オフラインになっている。
    • キュー データベースの回復後 2 日間で、メッセージの配信が終わっていない。

    これにより、キュー データベースの起動後または再起動されたデータベースが古いメッセージを配信するときに、メッセージがすぐには削除されなくなります。

メッセージの有効期限の詳細については、「メッセージの再試行、再送信、および有効期限の間隔の管理」を参照してください。

対象の Exchange トランスポート サーバー上での回復済みキュー データベースの起動

対象の Exchange トランスポート サーバー上の回復済みキュー データベースを起動するには、次の操作を行います。

  1. コマンド プロンプトまたは Exchange 管理シェルで、対象の Exchange トランスポート サーバーに対して次のコマンドを実行します。

    Net Stop MSExchangeTransport
    
  2. 対象の Exchange トランスポート サーバー上の既存の空のキュー データベース ファイルおよびトランザクション ログ ファイルのすべてを、"C:\QueueRecovery" のすべてのファイルで上書きします。既定では、キュー データベースとトランザクション ログは、C:\Program Files\Microsoft\Exchange Server\TransportRoles\data\Queue にあります。

  3. コマンド プロンプトまたは Exchange 管理シェルで、次のコマンドを実行します。

    Net Start MSExchangeTransport
    

回復後の構成作業

回復済みキュー データベースが対象の Exchange トランスポート サーバー上で起動するときに、メッセージ フローが開始されます。次の一覧に、発生する可能性のある問題を示します。

  • 回復済みキュー データベースが、エラーを起こした Exchange 2007 サーバーに存在していた場合、有害メッセージ キューに置かれたメッセージを処理する準備をします。有害メッセージ キュー内のメッセージを 1 つずつ確認して、メッセージが実際に Exchange 2007 サーバーのエラーを引き起こしたのか、または不必要にメッセージが有害メッセージ キューに置かれたのかどうかを判断する必要があります。メッセージを再開するか、メッセージをエクスポートして検査するかを判断する場合もあります。有害メッセージ キューに置かれたメッセージの安全性を確信できない場合は、検査できるようにメッセージをファイルにエクスポートします。有害メッセージ キューからメッセージを削除する場合は、NDR を送信せずに削除します。NDR には有害メッセージのコンテンツが含まれることがあります。
  • 到達不能キュー、および再試行状態で滞っている配信キューにあるメッセージを処理する準備をします。これらのメッセージは手動で再送信する必要があります。
  • 配信に問題があるメッセージを削除する場合は、メッセージの削除時に NDR を送信するかどうかを判断します。メッセージを削除して NDR を送信する場合、NDR メッセージ自体を配信する必要があります。さらに、それらのメッセージ自体の配信に問題がある可能性があります。問題のメッセージを NDR を送信せずに削除することもできます。メッセージを削除する方法の詳細については、「キューからメッセージを削除する方法」を参照してください。
  • 回復済みのキュー データベースを対象の Exchange トランスポート サーバー上で今後も保持するか、それとも、溜まっていたメッセージの配信をすべて終えた後に新しいキュー データベースで置き換えるかを検討します。回復済みのキュー データベースを起動するとすぐに、Exchange トランスポート サーバーの通常のメッセージ配信活動の一環として新しいメッセージが到着します。新しいコピーでキュー データベースを置き換える場合は、以下の手順を実行する必要があります。
    1. Microsoft Exchange Transport サービスを一時停止して、既存のメッセージを完全に送出します。この停止中に、新しいメッセージは受け付けられません。
    2. Microsoft Exchange Transport サービスを停止します。
    3. キュー データベース ファイルとトランザクション ログ ファイルをすべて削除します。
    4. Microsoft Exchange Transport サービスを開始します。

詳細情報

詳細については、以下のトピックを参照してください。

参照している情報が最新であることを確認したり、他の Exchange Server 2007 ドキュメントを見つけたりするには、Exchange Server TechCenter を参照してください。