使用中のデータを FRS でレプリケートするときにエラー "ERROR_SHARING_VIOLATION" が発生する

重要 : この資料には、レジストリの編集方法が記載されています。万一に備えて、編集の前には必ずレジストリをバックアップし、レジストリの復元方法を理解しておいてください。バックアップ、復元、および編集方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。

256986 Microsoft Windows レジストリの説明

現象

SYSVOL レプリカ セットをホストしている分散ファイルシステム (DFS) レプリカ メンバまたはドメイン コントローラで、次のようなイベントがイベント ビューアのファイル レプリケーション サービス (FRS) 領域に表示されることがあります。


共有違反の原因として、対象のコンピュータにレプリケートするファイルが他のソースで開かれている可能性があります。共有違反が発生しているファイルの完全なパスを確認するには、compmgmt.msc で [コンピュータの管理]、[共有フォルダ]、[開いているファイル] の順に開き、問題のファイルおよびそのファイルを開いているユーザーを表示します。上記のイベントに表示されたファイルを探し、そのファイルを右クリックします。[開いているファイルを閉じる] オプションを選択し、強制的にファイルを閉じます。同じ名前の複数のファイルが開いている場合、すべてのファイルを閉じるか、またはサポート技術情報に記載されている詳細な手順を実行して、完全なパスがイベントで報告された GUID に一致するファイルを特定することが必要な場合があることに注意してください。

原因

次のいずれかの原因によって、この問題が発生することがあります。

  • 共有違反が発生したため、FRS がレプリケート先にファイルをインストールできない。

  • FRS で共有違反が発生したため、レプリケートするステージング ファイルを FRS が生成できない。

共有違反は、レプリケートするファイルへのハンドルが他のソースで開かれている場合に発生する可能性があります。通常、共有違反を引き起こす原因となる可能性があるのは以下のプログラムです。

  • ウイルス対策プログラム
  • ディスク最適化ツール
  • アクセス制御リスト (ACL) の変更を頻繁に適用するファイル システム ポリシー
  • レプリカ セットに含まれる、常時使用中になるユーザー プロファイルまたは個人データ
  • エンド ユーザー、プログラム、またはプロセスによって長時間開いたままにされるその他の種類のデータ

解決方法

この問題を解決するには、以下のいずれかの方法を使用します。

方法 1 : Install Override 機能を使用する

Windows Server 2003 の Install Override 機能を使用すると、ロックされているファイルの名前を変更できます。これによって、FRS がファイルをレプリケートできるようになります。

この機能を有効にする方法および使用する方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。

816493 ファイル レプリケーション サービスを構成して、レプリケーションをブロックする共有違反を軽減する方法

方法 2 : ロックされているファイルを特定し、ハンドルを解放する

Windows Server 2003 を使用していない場合、または Install Override 機能を有効にしない場合、この問題の発生を防止する唯一の方法は、ロックされているファイルのハンドルを解放することです。ただし、13573 イベントの報告数は Max Sharing Violation Event 設定に指定されている 1 時間あたりの最大報告数に制限されているため、同じ状況のファイルでも報告されていないものがある場合があります。そのため、ロックされているすべてのファイルのハンドルを解放するには、最初に、開かれているファイルをすべて特定する必要があります。



Windows 2000 でこの問題を追跡するには、「サポート技術情報」 (Microsoft Knowledge Base ) の以下の資料に記載されている修正プログラムをダウンロードしてインストールします。

815473 ファイル レプリケーション サービスが共有違反のエラーをログに出力しない


この修正プログラムを使用すると、13573 イベントのログ出力を制御するオプションを設定できます。この修正プログラムには、Windows Server 2003 にある "Install Override 機能" は含まれていません。



INSTALL_RETRY 状態にあるすべてのファイルを特定するには、ntfrsutl.exe inlog コマンドを実行し、状態が IBCO_INSTALL_RETRY としてマークされているファイル エントリをすべて検索します。開かれているファイルの完全なパスを調べるには、次の手順を実行します。

  1. イベント ID の説明または取得した inlog データのいずれかからファイル GUID を調べます。inlog データの例を次に示します。

    Table Type : Inbound Log Table for DOMAIN SYSTEM VOLUME (SYSVOL SHARE) (1)

    Flags : 010000c6 Flags [VVAct Content Retry InstallInc CmpresStage ]

    IFlags : 00000001 Flags [IFlagVVRetireExec ]

    State : 0000000d CO STATE: IBCO_INSTALL_RETRY

    FileGuid : 36a42f7e-b3a9-494c-ae0cef2929771d6e

    EventTime : Thu May 29, 2003 19:13:40

    FileName : Filename.txt
  2. 利用可能なツールを使用するか、または IDTable エントリのデータを解析して、ファイル GUID を完全なパスに変換します。ntfrsutl idtable コマンドを使用して、このデータを抽出できます。

開かれたままのファイルのパスを調べる

開かれたままのファイルのパスを調べるには、次の手順を実行します。
  1. FRSDiag.exe を入手して実行します。FRSDiag.exe を入手するには、以下のマイクロソフト Web サイトにアクセスします。

  2. エラーが発生している対象サーバーの名前を入力するか、または [Browse] をクリックしてサーバーを指定します。

  3. [Selections] メニューの [Uncheck All] をクリックします。

  4. [IDTable Parser] チェック ボックスをオンにします。

  5. [GO] をクリックします。



    %USERPROFILE%\Desktop\Logs フォルダの下に FRSDiag.txt という名前のファイルが作成されます。

  6. FRSDiag.txt で、ファイル GUID とファイルの日付を検索します。

開かれているファイルを確認したら、Sysinternals の Process Explorer を使用して、ファイルをロックしているプロセスを特定できます。Process Explorer をダウンロードするには、以下の Sysinternals Web サイトにアクセスします。

Process Explorer を使用するには、次の手順を実行します。

  1. Process Explorer を起動し、すべてのプロセス情報が読み込まれるまで待ちます。

  2. [Find] メニューの [Find Handle or DLL] をクリックします。

  3. ファイルのパス (たとえば、scripts\filename.txt) を入力し、[Search] をクリックします。

  4. プロセスが見つかったら、そのプロセスをダブルクリックし、開かれたままになっているファイルの名前であることを確認します。

  5. 必要に応じてプロセスを終了します。

他社テクニカル サポートのお問い合わせ窓口は、ユーザーの便宜のために提供されているものであり、将来予告なしに変更されることがあります。マイクロソフトは、掲載している情報に対して、いかなる責任も負わないものとします。



この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。明示または黙示にかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。



使用している環境で、このファイルが開かれていることが正常な動作であると判断した場合は、このイベントのログ出力を無効にするか、1 時間あたりのイベント報告数を変更します。この操作を行うには、次の手順を実行して、指定されているレジストリ サブキーを編集します。



警告 : レジストリ エディタの使い方を誤ると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリ エディタの誤用により発生した問題に関しては、一切責任を負わないものとします。レジストリ エディタは、自己の責任においてご使用ください。

  1. レジストリ エディタを起動します。

  2. 次のサブキーを見つけて変更します。

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NtFrs\Parameters

    値の名前 : Enable Sharing Violation Logging

    値の種類 : DWORD

    値の範囲 : 0 または 1

    デフォルト値 : 0

    説明 : 共有違反のログ出力のオン/オフを切り替えます。

  3. 次のサブキーを見つけて変更します。

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NtFrs\Parameters

    値の名前 : Max Sharing Violation Event

    値の種類 : DWORD

    値の範囲 : 1 ~ 2000

    デフォルト値 : 10

    説明 : 期間ごとの共有違反イベントの最大報告数を指定します。

  4. 次のサブキーを見つけて変更します。

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NtFrs\Parameters

    値の名前 : Sharing Violation Retry Count

    値の種類 : DWORD

    値の範囲 : 1 ~ 2000

    デフォルト値 : 10

    説明 : 変更命令ごとの共有違反イベントの頻度を指定します。たとえば、値を 10 に設定すると、変更命令によって共有違反が 10 回発生するごとに、一度報告されます。

関連情報

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。

284947 ウイルス対策プログラムがセキュリティ記述子を変更することが原因で SYSVOL と DFS の FRS データが過度にレプリケートされる
279156 ファイル レプリケーション サービスによってレプリケートされたディスク ドライブまたはフォルダにファイル システム ポリシーを設定する効果

815263 ファイル レプリケーション サービスと互換性があるウイルス対策、バックアップ、およびディスク最適化プログラム
プロパティ

文書番号:822300 - 最終更新日: 2008/01/13 - リビジョン: 1

フィードバック