まりふのひと

ファイル共有ロック数が制限を超えています

Accessの動作確認中に見出しのエラーが出た。
エラーコードは 3052。
ヒントは、[ツール]⇒[オプション]⇒[詳細]タブにあるらしいが‥‥

情報

  • マイクロソフト サポートオンライン
    • 現象
       1人以上のユーザーが、マルチユーザー環境で多数のトランザクションを処理すると、トランザクションが失敗し、次のエラー メッセージが表示されることがあります。
        ファイルの共有ロック数が制限を超えています
    • 原因
       このエラーは、トランザクションを実行するために必要なロックの数が、ファイルごとの最大ロック数を超えた場合に発生します。
    • 回避策
       この問題を回避するには、ファイルごとの最大ロック数を増やします。これを行うには、以下のいずれかの方法を実行します。
      方法1: MaxLocksPerFile レジストリ キーを設定して、ファイルごとの最大ロック数を増やす
      方法2: SetOption メソッドを使用して MaxLocksPerFile の値を一時的に変更する
  • マイクロソフト サポートオンライン(類似情報)
    • 現象
       2つのレプリカの同期をとるときに、次のエラー メッセージが表示されることがあります。
        レプリカ 'Replica1.mdb' とレプリカ 'Replica2.mdb' の間で同期をとることができませんでした。
        ファイルの共有ロック数が上限を超えています (Error 3052)

       このエラーは、Synchronize メソッドを使用する Visual Basic for Applications (VBA) のプロシージャを実行するときにも発生することがあります。
    • 原因
       どちらか一方のレプリカに対する変更内容が多いため、同期処理を正常に完了することができません。たとえば、新規レコードを多く追加したために一方のレプリカのサイズが 100 MB 増加した場合、この問題が発生することがあります。変更が多いレプリカは、同期を試みた側のデータベースの場合も、レプリカ セットのもう一方のデータベースの場合もあります。
    • 解決方法
       Microsoft Access 2000 では、Windows レジストリを編集して Microsoft Jet 4.0 データベース エンジンの MaxLocksPerFile の設定を大きくすることにより、この問題を回避できます。この設定のデフォルト値は 9500 です。ただし、一方のレプリカが Novell Netware サーバーに存在する場合、この値を変更することはお勧めしません。Novell Netware サーバーでは接続あたりのレコード ロック数が最大 10,000 に制限されるためです。両方のレプリカが Microsoft Windows NT 4.0 または Microsoft Windows 95 以降を実行するサーバーに存在する場合、この設定の最大値は利用可能なリソースによってのみ制限されます。

結論

更新データ件数が多いためのようだ。レジストリーを変更しないとダメらしい。ヤレヤレ...