現在オフラインです。再接続するためにインターネットの接続を待っています

多数のトランザクション処理中にエラー メッセージ "ファイルの共有ロック数が制限を超えています" が表示される

Office 2003 のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Office 2003 のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

重要 : この資料には、レジストリの編集方法が記載されています。万一に備えて、編集の前には必ずレジストリをバックアップし、レジストリの復元方法を理解しておいてください。バックアップ、復元、および編集方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
322756 Windows XP および Windows Server 2003 でレジストリをバックアップ、編集および復元する方法
現象
1 人以上のユーザーが、マルチユーザー環境で多数のトランザクションを処理すると、トランザクションが失敗し、次のエラー メッセージが表示されることがあります。
ファイルの共有ロック数が制限を超えています
原因
このエラーは、トランザクションを実行するために必要なロックの数が、ファイルごとの最大ロック数を超えた場合に発生します。
回避策
警告 : レジストリ エディタまたは別の方法を使用してレジストリを誤って変更すると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリの変更により発生した問題に関しては、一切責任を負わないものとします。レジストリの変更は、自己の責任において行ってください。

この問題を回避するには、ファイルごとの最大ロック数を増やします。これを行うには、以下のいずれかの方法を実行します。

方法 1 : MaxLocksPerFile レジストリ キーを設定して、ファイルごとの最大ロック数を増やす

  1. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。
  2. regedit と入力し、[OK] をクリックします。
  3. 以下のうち該当する方法を使用します。
    • 32 ビット版の Windows オペレーティング システム上で実行されている Microsoft Access 2000、Microsoft Access 2002、および Microsoft Office Access 2003 の場合は、レジストリ エディタを使用して、以下のレジストリ キーに移動します。
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0

      64 ビット版の Windows オペレーティング システム上で実行されている Microsoft Access 2000、Microsoft Access 2002、および Microsoft Office Access 2003 の場合は、レジストリ エディタを使用して、以下のレジストリ キーに移動します。
      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Jet 4.0
    • 32 ビット版の Windows オペレーティング システム上で実行されている Microsoft Office Access 2007 の場合は、レジストリ エディタを使用して、以下のレジストリ キーに移動します。
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE

      64 ビット版の Windows オペレーティング システム上で実行されている Microsoft Office Access 2007 の場合は、レジストリ エディタを使用して、以下のレジストリ キーに移動します。
      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE
  4. レジストリ エディタの右ウィンドウで、[MaxLocksPerFile] をダブルクリックします。
  5. [DWORD 値の編集] ダイアログ ボックスで、[10 進] をクリックします。
  6. 必要に応じて [値のデータ] ボックスの値を変更し、[OK] をクリックします。
: この方法によって、Microsoft Jet データベース エンジン 4.0 を使用するすべてのアプリケーションの Windows レジストリ設定が変更されます。

方法 2 : SetOption メソッドを使用して MaxLocksPerFile の値を一時的に変更する

: この資料のサンプル コードは、Microsoft Data Access Object を使用しています。正常に実行するには、Microsoft DAO 3.6 Object Library を参照する必要があります。これを行うには、Visual Basic Editor で [ツール] メニューの [参照設定] をクリックし、[Microsoft DAO 3.6 Object Library] チェック ボックスがオンになっていることを確認します。

SetOption メソッドを使用して、ファイルごとのデフォルトのロック数を一時的に上書きします。MaxLocksPerFile レジストリ キーを設定する際に、ファイルごとのデフォルトのロック数を設定します。SetOption メソッドを使用して、新しい値を設定します。新しい値は、DBEngine オブジェクトを閉じるまで有効です。方法 2 を使用するには、以下の手順を実行します。
  1. Microsoft Access を起動します。
  2. データベースを開き、Alt キーを押しながら F11 キーを押して、Visual Basic editor を起動します。
  3. [Microsoft Visual Basic -Database Name-[Module Name (コード)]] ウィンドウで、[表示] メニューの [イミディエイト ウィンドウ] をクリックします。
  4. イミディエイト ウィンドウに、次のコードを入力します。
    DAO.DBEngine.SetOption dbmaxlocksperfile,15000
  5. Enter キーを押して、入力したコード行を実行します。

    : この処理により、一時的に MaxLocksPerFile の値が 15,000 に設定されます。
多数のトランザクションを処理するには、要件を満たすように MaxLocksPerFile 値を設定して、セッションのトランザクションを実行します。

SetOption メソッドを使用して MaxLocksPerFile の設定に加えた変更は、現在のセッションでのみ有効です。
詳細
MaxLocksPerFile の設定により、Microsoft Jet でファイルに対して設定する最大ロック数が決まります。デフォルトの MaxLocksPerFile 値は、9,500 です。ただし、Novell NetWare サーバーで作業している場合は、この値を変更しないでください。それは、サーバーの接続ごとの最大レコード ロック数が 10,000 のためです。関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
305995 Novell Server 上の Jet データベースに接続するとエラー "3050 ファイルをロックできませんでした" が発生する
関連情報
関連情報については、以下の「サポート技術情報」 (Microsoft Knowledge Base) の資料をクリックしてください。
198633 Access 2000 で 2 つのレプリカの同期をとるときにエラー メッセージ "ファイルの共有ロック数が上限を超えています" が表示される
209940 Access 2000 のテーブルに対する処理の実行中にエラー メッセージ "ディスクの空き領域またはメモリが不足しています" が表示される
ACC2003 ACC2007
プロパティ

文書番号:815281 - 最終更新日: 01/18/2008 03:00:19 - リビジョン: 8.1

Microsoft Office Access 2007, Microsoft Office Access 2003, Microsoft Access 2002 Standard Edition, Microsoft Access 2000 Standard Edition

  • kberrmsg kbregistry kbprb KB815281
フィードバック
/html>