最終更新日:2020 年 3 月 24 日
問題
Office 365 と以前のバージョンの Office の両方が MSI でインストールされていて、そのプログラムが OLEDB インターフェイスまたは ADO.Net インターフェイスを使用している場合、接続を終了した後でもデータベースがロックされていることを示すエラーが発生することがあります。
この問題は、Office 365 バージョン 2002 がインストールされており、以前のバージョンの Office が MSI 経由でインストールされている場合にのみ発生します。 たとえば、Office 365 および 2013 Access Runtime または 2010 Access データベース エンジン再頒布可能パッケージがインストールされている場合があります。
シナリオ
データベース ファイルへの接続を開いたり閉じたりした後に .Net プログラムのデータベース ファイルを削除しようとすると、次の例外が表示されることがあります。
System.IO.Exception:ファイルは別のプロセスで使用されているため、'このプロセスは'データベースへのパス' ファイルにアクセスできません。
データベースの場所を見ると、Ace データベース ロック ファイル (databasename.laccdb) は、引き続き存在しています。
通常は、数秒から数分の一定の時間が経過すると、ロック ファイルが削除され、データベースにアクセスできるようになります。
Office 365 のバージョン 2002 から、Office 365 に付属している Ace のバージョンは COM OLEDB インターフェイスのプロバイダーになりますが、以前のバージョンでは、MSI 製品に含まれる Ace のバージョンが使用されます。
動作には違いがあります。特に Office 365 の場合は、既定値の OLEDB リソース プーリング を使用して接続し、MSI の場合は、接続に既定のプーリングを使用しません。 このような影響があるのは、接続が閉じたり破棄されたりした場合に、システムが再利用する可能性があり、接続がすぐに解除されないためです。 ただし、この場合は、プールが接続を解放するまでデータベース ファイルのロックが解除されないことがあります。
状態: 修正済み
この問題は修正されました。 Access を起動する場合は、[ファイル]、[アカウント]、[更新オプション]、[今すぐ更新] の順にクリックすると、最新バージョンであることが確認され、すべてのバージョンで利用可能な修正プログラムが適用されます。
バージョン 2002 (最新チャネル) を使用している場合、この問題はビルド 16.0.12527.20278 以降で修正されています。
バージョン 2003 (最新チャネル (プレビュー版)) を使用している場合、この問題はビルド16.0.12624.20176 以降で修正されています。
バージョン 2004 (ベータ チャンネル) を使用している場合、この問題はビルド 16.0.12705.10000 以降で修正されています。
その他のバージョンはこの問題の影響を受けません。