まりふのひと

Access2003/「ファイル共有ロック数が制限を超えています」が出るのでレジストリーを変更した

FS社に伺い、

  1. WindowsXP/Professional の Access2007 をアンインストール。
  2. Access2003 をインストールしようとしたら、
    • データ実行防止/コンピュータ保護のため、このプログラムは Windows により終了されました。」という画面が出てインストールに失敗した。
      (日本語にチョッと違和感が...
  3. JUSTシステムのFAQ「コンピュータ保護のため、このプログラムはWindowsにより終了されました」が表示されて起動できない場合がある」を参考に、パフォーマンスオプションのチェックを入れ方を変更したが、何れも解決しなかった。
    (JUSTシステムが悪いのではありません)
  4. Windows7 PC(Microsoft Office なし)を準備していただき、Access2003 をインストール。
  5. サーバーPC のデータを、クライアントPCにコピー。
  6. ネットワークドライブを切断。
  7. subst コマンドで仮想ドライブを作成。
  8. 課題の「更新処理」を行ったら‥‥ 「ファイル共有ロック数が制限を超えています」



※ 自サイトの過去の情報
  • 2005.06.20 ファイル共有ロック数が制限を超えています
  • 2009.09.25 ファイルの共有ロック数が制限を超えています(Error 3052)
※ Webを検索
  1. 多数のトランザクション処理中にエラー メッセージ "ファイルの共有ロック数が制限を超えています" が表示される (Microsoft サポート)

     現象
     1人以上のユーザーが、マルチユーザー環境で多数のトランザクションを処理すると、トランザクションが失敗し、次のエラー メッセージが表示されることがあります。

     回避策
     この問題を回避するには、ファイルごとの最大ロック数を増やします。これを行うには、以下のいずれかの方法を実行します。
    方法 1 : MaxLocksPerFile レジストリ キーを設定して、ファイルごとの最大ロック数を増やす
    方法 2 : SetOption メソッドを使用して MaxLocksPerFile の値を一時的に変更する

  2. [Access vba で問題発生!「ファイルの共有ロック数が上限を超えています」(Error 3052)] (ドロップシッピングにチャレンジ!)
     このエラーはいったい何なのか?
    僕が思うには、戻る機能(ロールバック)の為に、記憶していると思われます。ロールバックが必要でない更新の場合、この機能でエラーになるのは非常にやっかいですよね。そこで、コミットをするように記述を追加すれば問題なく処理されるようになりました。
    コミットのサンプルを書いておきます。まだいまいち理解できてません、これが正しい記述かわかりませんので、もし間違っていたら教えてくださいね。

  3. Accessで“ファイルの共有ロック数が制限を超えています”エラー (ウェブエッセンスブログ)
     どうやら、データ件数が増えてトランザクションが失敗してる模様。作ったファイルは配布、公開してないからひとまずよかったんだけど、対策をメモ

    1. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。
    2. regedit と入力し、[OK] をクリックします。
    3. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0
    4. MaxLocksPerFileの値を10進数にして150000 に修正


 結論

  • 上記を参考に、一番簡便なレジストリーを変更することにした。
    • MaxLocksPerFile の値の、(9,500)10 を(150,000)10 に変更。
  • これにより、エラー メッセージは出なくなった。が、あくまでも応急処置。
  • 現環境は本番データは使っていないので、次回までに更新のテストを依頼した。