現象
たとえば次のようなシナリオを考えてみます。
- 分散ファイル システム (DFS) レプリケーション ネットワーク環境を構築します。 このネットワーク内のサーバーは、Windows Server 2003 R2 または Windows Server 2008 を実行しています。
- ハブ サーバーとして機能するダウンストリーム サーバーがあります。 このサーバーは、上流のサーバーからデータをレプリケートします。
このシナリオでは、DFS レプリケーション サービスがダウンストリーム サーバーで停止することがあります。 さらに、イベント 2104 はダウンストリーム サーバーの DFS レプリケーション ログに記録されます。
注
ログ名: DFS レプリケーション
ソース: DFSR
イベント ID: 2104
タスク カテゴリ: なし
レベル:エラー
キーワード:クラシック
ユーザー: N/A
コンピューター: <コンピューター名>
説明:
DFS レプリケーション サービスは、ボリューム <ドライブ文字>: の内部データベース エラーから回復できませんでした。 このボリューム上のレプリケートされたすべてのフォルダーのレプリケーションが停止されました。
追加情報:
エラー: 9214 (内部データベース エラー (-1605))
ボリューム: <GUID>
データベース: <drive letter>:\System Volume Information\DFSR
注: エラー コード "-1605" は "JET_errKeyDuplicate" Jet エラーです。
同時に、イベント 2212 は上流サーバーの DFS レプリケーション ログに記録されます。
注
ログ名: DFS レプリケーション
ソース: DFSR
イベント ID: 2212
タスク カテゴリ: なし
レベル: 警告
キーワード:クラシック
ユーザー: N/A
コンピューター: <コンピューター名>
説明:
DFS レプリケーション サービスが、ボリューム <ドライブ文字>: で予期しないシャットダウンを検出しました。 これは、サービスが異常終了した場合 (たとえば、停電が原因である)、またはボリュームでエラーが発生した場合に発生する可能性があります。 サービスは自動的に回復プロセスを開始します。 サービスは、データベースを確実に回復できないと判断した場合、データベースを再構築します。 ユーザー操作は必要ありません。
追加情報:
ボリューム: <ドライブ文字>
GUID: <GUID>
しばらくすると、DFS レプリケーション サービスは自動的に再起動します。 ただし、同じ問題が再び発生する可能性があります。
原因
DFS レプリケーション サービス エラーは、イベント ID 2122 のインスタンスをログに記録した上流サーバーで、DFS レプリケーション データベースがダーティ シャットダウン状態から回復するために発生します。 ただし、ダウンストリーム サーバーでデータベースの不整合が生じます。
アップストリーム サーバーは、グローバル バージョン シーケンス番号をデータベースにコミットする前に、ダウンストリーム サーバーに対する更新プログラムのグローバル バージョン シーケンス番号を設定します。 その後、最新のグローバル バージョン シーケンス番号をデータベースにコミットする前に、上流のサーバーがクラッシュするか、停電またはハード ディスクの障害が発生します。
上流のサーバーは再開した後、別の更新プログラム用に既に公開されているグローバル バージョン シーケンス番号を再利用します。 同じグローバル バージョン シーケンス番号を持つさまざまな更新プログラムがあるため、ダウンストリーム サーバーが不整合を検出します。
ただし、同じコンテンツ セット内の 2 つのID_RECORDsが同じグローバル バージョン シーケンス番号を持つことはできないため、ダウンストリーム サーバーは不整合を解決できません。 この問題を解決しようとしても失敗し、「JET_errKeyDuplicate」エラーを表す「-1605」エラーコードが生成されます。
修正プログラムがインストールされると、DFS レプリケーションは別の Jet データベース関数を呼び出します。 この関数により、上流サーバーがダウンストリーム サーバーへの更新用のグローバル バージョン シーケンス番号を設定する前に、データベース トランザクションがアップストリーム サーバーのディスクにコミットされるようになります。
解決策
この問題を解決するには、次の手順を実行します。
ダウンストリーム サーバー上のデータベースの不整合の問題を解決するには、「回避策」セクションの手順を実行します。
この問題の再発を防ぐには、適切な修正プログラムを上流のサーバーにインストールします。
- Windows Server 2003 R2 を実行している上流のサーバーにこの修正プログラムをインストールします。
- Windows Server 2008 を実行している上流のサーバーで、次のマイクロソフト サポート技術情報資料から修正プログラムをインストールします。
979247 多数の上流サーバーからデータをレプリケートするように構成されている Windows Server 2008 ベースのダウンストリーム サーバーで DFS レプリケーション サービスがクラッシュする
修正プログラムの情報
マイクロソフトでは、この問題を修正する修正プログラムを提供しています。 ただし、この修正プログラムは、ここで説明する問題のみを修正することを目的としたものです。 この修正プログラムは、ここで説明する問題が発生しているシステムにのみ適用してください。 この修正プログラムは、今後さらにテストを行う場合があります。 したがって、この問題で深刻な影響を受けていない場合は、この修正プログラムが含まれる次のソフトウェア更新プログラムがリリースされるまで待つことを推奨します。
修正プログラムをダウンロードできる場合は、このサポート技術情報の資料の上部に「修正プログラムのダウンロード」セクションがあります。 このセクションが表示されていない場合は、Microsoft カスタマー サービス & サポート にお問い合わせのうえ、修正プログラムを入手してください。
注: 別の問題が発生した場合、またはトラブルシューティングが必要な場合には、別のサービス リクエストを作成することが必要になる場合があります。 特定の修正プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。 Microsoft カスタマー サービス & サポート の電話番号一覧または別のサービス リクエストの作成については、次のマイクロソフト Web サイトを参照してください。
http://support.microsoft.com/contactus/?ws=support 注: [修正プログラムのダウンロードが利用可能] フォームには、修正プログラムを使用できる言語が表示されます。 使用している言語が表示されない場合は、その言語の修正プログラムが存在しないことになります。
前提条件
この修正プログラムは、Windows Server 2003 R2 Service Pack 2 (SP2) を実行している上流サーバーに適用します。
Windows Server 2003 Service Pack の入手方法の詳細については、以下のサポート技術情報番号をクリックしてください。
889100 Windows Server 2003 の最新の Service Pack を入手する方法
レジストリ情報
このパッケージに含まれている修正プログラムを使用するために、レジストリを変更する必要はありません。
再起動の必要性
この修正プログラムのインストール後、コンピュータを再起動する必要があります。
修正プログラムの置き換えに関する情報
この修正プログラムを適用しても、以前にリリースされた修正プログラムが置き換えられることはありません。
ファイル情報
この修正プログラムの英語 (米国) 版では、次の表に示す各属性を持つファイルがインストールされます。 これらのファイルの日付と時刻は世界協定時刻 (UTC) で記載されています。 お使いのコンピューターでは、これらのファイルの日付と時刻は夏時間 (DST) 調整済みのローカル時刻で表示されます。 さらに、ファイルに対して特定の操作を実行すると、日時が変更される場合があります。
Windows Server 2003 R2 のファイル情報メモ
- これらの表に示すファイルに加えて、この修正プログラムは、Microsoft デジタル署名で署名された関連するセキュリティ カタログ ファイル (KBnumber.cat) もインストールします。
サポートされているすべてのバージョンの Windows Server 2003 R2 SP2 (x86 ベース)
| ファイル名 | ファイルのバージョン | ファイル サイズ | 日付 | 時刻 | プラットフォーム | SP の要件 |
|---|---|---|---|---|---|---|
| W03a3409.dll | 5.2.3790.4590 | 43,520 | 2009 年 9 月 16 日 | 12:16 | x86 | SP2 |
| Dfsr.exe | 5.2.3790.4651 | 1,705,984 | 2010 年 1 月 18 日 | 20:30 | x86 | SP2 |
サポートされているすべてのバージョンの Windows Server 2003 R2 SP2 (x64 ベース)
| ファイル名 | ファイルのバージョン | ファイル サイズ | 日付 | 時刻 | プラットフォーム | SP の要件 | サービス ブランチ |
|---|---|---|---|---|---|---|---|
| Dfsr.exe | 5.2.3790.4651 | 3,595,264 | 2010 年 1 月 20 日 | 01:57 | x64 | SP2 | 適用外 |
| W03a3409.dll | 5.2.3790.4590 | 44,032 | 2010 年 1 月 20 日 | 01:57 | x64 | SP2 | 適用外 |
| Ww03a3409.dll | 5.2.3790.4590 | 43,520 | 2010 年 1 月 20 日 | 01:57 | x86 | SP2 | すごい |
サポートされているすべてのバージョンの Windows Server 2003 R2 SP2 (IA-64 ベース)
| ファイル名 | ファイルのバージョン | ファイル サイズ | 日付 | 時刻 | プラットフォーム | SP の要件 | サービス ブランチ |
|---|---|---|---|---|---|---|---|
| Dfsr.exe | 5.2.3790.4651 | 5,501,440 | 2010 年 1 月 20 日 | 01:53 | IA-64 | SP2 | 適用外 |
| W03a3409.dll | 5.2.3790.4590 | 42,496 | 2010 年 1 月 20 日 | 01:53 | IA-64 | SP2 | 適用外 |
| Ww03a3409.dll | 5.2.3790.4590 | 43,520 | 2010 年 1 月 20 日 | 01:53 | x86 | SP2 | すごい |
回避策
DFS レプリケーション エラーの回避策
この問題を回避するには、古いID_RECORDレコードに対して手動で廃棄 (Tombstone) 操作を実行し、新しいグローバル バージョン シーケンス番号を作成します。 手順は次のとおりです。
発信元の DFSR サーバーとファイル パスを判別します。 これは、ファイル GVSN の GUID と RG 名 (CSID が一致する) で構成されます。
したがって、上記の場合は、たとえば次のようになります。
20091213 01:55:56.862 8820 RDCX 808 Rdc::SeedFile::Initialize ハッシュは一致します。 ダウンロードは冗長です。uid:{8BB53DB2-9446-47D0-94E0-F93A56589D18}-v2357 gvsn:{58A90409-3866-4DC1-B474-BE1C8DE41B84}-v22461 fileName:4-5269.dot csId:{B890770A-6043-4004-A149-41E3A1935AC1
20091213 01:55:57.705 8820 DOWN 5186 [ERROR] DownstreamTransport::RdcGet Failed on connId:{7D927665-24BF-4F16-B503-708AABDBC9AE} csId:{B890770A-6043-4004-A149-41E3A1935AC1} rgName:SOME_RG update:
実行:
DFSRDIAG.EXE GUID2NAME /rgname:"SOME_RG" /guid:{58A90409-3866-4DC1-B474-BE1C8DE41B84}
サーバーがわかったので、そのコンピューターに移動できます。
- 上流のサーバーが Windows Server 2008 R2 を実行している場合は、次のコマンドを実行します。
DFSRDIAG IDRECORD - 上流のサーバーが Windows Server 2003 または Windows Server 2008 を実行している場合は、次のコマンドを実行します。
WMIC.EXE /namespace:\\root\MicrosoftDFS path DFSRIDCrecordInfo.Uid="<上流サーバー側の複製された GVSN の UID>" getfullfilepath を呼び出す
- 上流のサーバーが Windows Server 2008 R2 を実行している場合は、次のコマンドを実行します。
問題のあるファイルの完全パスを見つけます。
Windows Server 2008 R2 を使用している場合は、DFSRDIAG IDRECORD を使用します。 次に例を示します。
DFSRDIAG.EXE IDRECORD /UID:{8BB53DB2-9446-47D0-94E0-F93A56589D18}-v2357
Win2003 または Win2008 を使用している場合は、WMIC を使用します。 次に例を示します。
WMIC.EXE /namespace:\\root\MicrosoftDFS path DFSRIDCrecordInfo.Uid="{8BB53DB2-9446-47D0-94E0-F93A56589D18}-v2357" call getfullfilepath
同じフォルダーにファイル (上記の例では "4-5269.dot") のコピーを作成し、"fixed.ned" のようなランダムな名前を付けます。
古いファイルを削除します (上記の例では "4-5269.dot")。
コピーしたファイルの名前を元の名前に変更します ("fixed.ned" から "4-5269.dot" に戻します)。
これにより、古いID_RECORDが廃棄され、新しい GVSN が作成され、すべてがうまくいきます。
回避策の例
たとえば、影響を受けるダウンストリーム サーバーで次のデバッグ ログを受け取るとします。
20091213 01:55:56.862 8820 RDCX 808 Rdc::SeedFile::Initialize ハッシュは一致します。 ダウンロードは冗長です、uid:{8BB53DB2-9446-47D0-94E0-F93A56589D18}-v2357 gvsn:{58A90409-3866-4DC1-B474-BE1C8DE41B84}-v22461 fileName:{8BB53DB2-9446-47D0-94E0-}-v2357 gvsn:{58A90409-3866-4DC1-B474-}-v22461 fileName:{58A90409-3866-4DC1-B474-}-v22461 fileName:{8BB53DB2-9446-476-44D1-B474-}-v22461 fileName:{8BB53DB2-9446-477-44D1-v224-5269.dot csId:{B890770A-6043-4004-A149-41E3A1935AC120091213 01:55:57.705 8820 DOWN 5186 [ERROR] DownstreamTransport::RdcGet failed on connId:{7D927665-24BF-4F16-B503-708AABDBC9AE} csId:{B890770A-6043-4004-A149-41E3A1935AC1} rgName:SOME_RG update: このシナリオでは、"{58A90409-3866-4DC1-B474-BE1C8DE41B84}-v22461" GUID と "SOME_RG"RgName は同じ "{B890770A-6043-4004-A149-41E3A1935AC1}" CSID を持っています。 したがって、このシナリオでは遅延の問題を回避するには、次の手順に従います。
次のコマンドを実行して、問題のあるアップストリーム サーバー名を取得します。
DFSRDIAG.EXE GUID2NAME /rgname:"SOME_RG" /guid:{58A90409-3866-4DC1-B474-BE1C8DE41B84}
アップストリーム サーバーで、複製されたグローバル バージョン シーケンス番号の GUID をデバッグ ログで見つけます。 次に、次のいずれかのコマンドを実行して、複製されたグローバル バージョン シーケンス番号を持つファイルの完全パスを取得します。
Windows Server 2008 R2 の場合は、次のコマンドを使用します。
DFSRDIAG.EXE IDRECORD /UID:{8BB53DB2-9446-47D0-94E0-F93A56589D18}-v2357
Windows Server 2003 R2 または Windows Server 2008 の場合は、/namespace:\\root\microsoftdfs path dfsridrecordinfo command:WMIC.EXE を使用します。Uid="{8BB53DB2-9446-47D0-94E0-F93A56589D18}-v2357" call getfullfilepath
ファイル名が "4-5269.dot" であると仮定します。 「4-5269.dot」ファイルをコピーし、コピーしたファイル名を「fix.dot」ファイル名に変更します。 "4-5269.dot" ファイルと "fix.dot" ファイルは必ず同じフォルダーに入れてください。
"4-5269.dot" ファイルを削除します。
「fix.dot」ファイルの名前を「4-5269.dot」ファイル名に変更します。
これらの手順を実行することで、この例の DFS レプリケーション データベースの問題を回避できます。
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。
追加情報
ソフトウェア更新プログラムに関する用語の関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
824684 Microsoft のソフトウェア更新プログラムの説明で使用される一般的な用語の解説