28

Windows サーバーで実行されているアプリケーションは、Jet/Access データベースを利用しています。何らかの理由で、約 2 週間ごとにデータベース ファイルがシステム プロセスによってロックされます (PID 4、修正されたようです)。

グーグルで調べた後、他のユーザーがその特別なプロセスによってファイルをロックしているのを見つけましたが、ファイルは異なります(もちろん)。

  • システム プロセスが開いているファイル ハンドルを保持する一般的な理由は何ですか?
  • 私のアプリケーションがこのロック状態の原因ですか?
  • すべてのハンドルは、システム プロセスによって暗黙的に開かれていますか? プロセスがクラッシュした後、ハンドルがまだ開いている可能性があり、システム プロセスが何らかの形でそのハンドルの所有権を取得することが想像できます。
  • それを防ぐためにアプリケーションで何かできることはありますか?
4

8 に答える 8

45

共有を介してアクセスされるファイルは、システム プロセス (PID 4) によってロックされます。

開いてみてくださいcompmgmt.msc->システムツール->共有フォルダー->ファイルを開いて、ロックされたファイルがそこにリストされているかどうかを確認します

これを再現する方法については、sysinternals フォーラムも参照してください。
すべてのアプリケーションが開いたときにファイルをロックするわけではありませんが、Excel はロックします。Accessが同じことをするかどうかはわかりません...

于 2012-08-22T09:11:23.427 に答える
28

私が見つけた別の考えられる原因は次のとおりです。

Windows 7 にはバグがあり、おそらく Windows Server 2008 (おそらく 64 ビット バージョンのみ) にもバグがあります。Application Experienceサービスを無効にすると表示され、質問で説明されているのと同じ問題が発生します。

このサービスを再度有効にすると、この問題が解決しました。

なぜそれが問題を引き起こしているのかについて、もう少し情報がここにあります。

関連していると思われる他のSOの質問のリスト:

于 2010-12-29T22:28:29.617 に答える
7

これは、ハンドルが漏れているドライバーレベルの問題のように思えます。

ウイルス対策パッケージを実行している場合は、アップグレード、無効化 (一時的に!)、または別のブランドへの切り替えを試してください。

于 2009-08-18T12:41:52.413 に答える
1

サーバーは定期的なファイルバックアップを実行するように設定されていますか?

もしそうなら、バックアップはシステムとして実行されていますか、おそらく競合が発生したときにロックされたファイルを促しますか?

于 2009-08-18T12:13:37.943 に答える
1

私にとっては、ハンマーで叩かなければなりませんでした。フォルダーが配置されているドライブの Chkdsk /f で修正されました。注意して使用してください。

于 2016-10-12T23:10:14.770 に答える