treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

Microsoft Accessのロックファイル(.laccdb)が消えない

Accessを使っていると、ロックファイルとして「.laccdb」という一時ファイルが作成されますが、使用後には自動的に削除されます。これが残っていて調査をすることになったのでご報告です。

状況

Accessを使用していると、一時ファイルとして「ファイル名.laccdb」が自動的に生成されます。
Accessを閉じると自動的にこの一時ファイルは削除されるのですが、このファイルがAccessを閉じてもずーっと残っているので、ユーザから「これはどういうことか」という話になり、調査することになりました。

調べる

そのAccessは共有フォルダで共有されており、数台のPCから参照されます。
ユーザ曰く、「.laccdb」が残っているということは、誰かが使用しているということなのだが、Accessファイルを参照できるPCは全て終了させてある=誰が使っているのか?=セキュリティ上の問題じゃないか?という不安があるらしい。

閉じたイントラ内でピンポイントでAccessを狙い撃ちするのはちょっと考えにくいなぁ、と思いながら、共有フォルダをホストするサーバOSの「コンピュータの管理」から共有フォルダのセッションを確認しました。

うーん、特に問題はなさそう。セッションは残っているものの、開いているファイルにAccessファイル名は表示されていないし、誰も使っていないようです。

削除を試みる

一時ファイルの.laccdbファイルが残存しているのはどうしても気持ち悪いようなので、ファイルの削除を試みることになりました。

いちおう(いらないと思うけど)削除対象のファイルはコピーしておきます。

まず普通に削除を実行してみます。

f:id:treedown:20220206004743p:plain
エクスプローラから操作して削除を試みると、

f:id:treedown:20220206004808p:plain

「別のプログラムがこのファイルを開いているので、操作を完了できません。
ファイルを閉じてから再実行してください。」

というエラーでどうしても削除はできませんでした。うーん。

失敗したので、ファイルを無効化してみようと思います。

メモ帳を起動。

f:id:treedown:20220206004842p:plain
起動したメモ帳のメニューから「ファイル」をクリックして、

f:id:treedown:20220206004900p:plain

「名前を付けて保存」をクリックします。
ファイルを保存する画面で、

f:id:treedown:20220206004921p:plain
削除したいロックファイルを選択し、空のメモ帳のファイルで上書き。

f:id:treedown:20220206004947p:plain
上書きしますか?と聞かれるので、構わず上書きしてしまいます。

これで、ロックファイルが無効化されて、(パーミッションの問題があるとしてもメモ帳で上書きできる状態なら大丈夫なはずだし)ファイルが削除できるはず。

という目論見だったのですが、結局削除できず冒頭に戻ります。

Microsoft更新プログラムのバグ?

そもそもAccessを閉じてロックファイルが消えない原因はなんなのか、という点は気になります。
調べていると、このような記事に出会いました。

www.koregasiritai.com

こちらによれば、12月の月例更新の不具合に一時ファイル.laccdbが消えなくなるという現象が発生する主旨の記述が見て取れます。今回の対象はOffice2016なのでKB5002099がそれに該当するらしい。

これをみて、Windowsの更新プログラムの問題だとすると、実害がないのなら(つまりAccessファイルの機能面で問題のある動作がないのであれば).laccdbが消えなくなるという現象自体に実害はないんじゃないか?とちょっと思いました。

ひとまず、Microsoft更新プログラムの更新待ちということになりそうです。

その後

この件、あれやこれやで結構時間が経過してしまいました。
そのうち、ファイル.laccdbの所有者となるユーザアカウントでサインインしたPCでAccessアプリを起動し直しているうちに、.laccdbが(PCの目の前でみていないのでどのタイミングかは不明ですが)フッと自動的に消えました。

ひとまずこれでユーザの「.laccdbファイルが残存しているのを何とかして欲しい」という点は解消したのと、ユーザに上記Microsoft更新プログラムの件を伝えて、以後.laccdbファイルが残存する動作があることを説明して対処は完了となりました。

なんだかすっきりしないけど、このときの対処はこれで完了です。