4

サーバーで共有されている Foxpro exe アプリケーションがあり、約 20 人のユーザーがそれを実行しています。ある同僚は、これらの dbf テーブルのインデックスを再作成する必要がある場合は、全員に exe アプリケーションを終了するように伝えるべきだと言いました。再インデックス プロセスが開始され、一部のユーザーがまだそのアプリケーションを実行している場合、dbf テーブルが破損します。

それは私に興味をそそられました。それは可能ですか?Foxprox DBF テーブルのインデックスを再作成するとき、プロセス自体が排他モードでテーブルを開き、テーブルが既に共有モードで開いている場合、そのテーブルには何もしないと常に考えていました。PAK と同様です。

4

3 に答える 3

11

FoxPro テーブルが破損する可能性があることに同意しますが、説明した状況からは不可能です。インデックスを再作成するには、テーブルを排他的に使用する必要があります。ファイルロックを取得するか、次のことを行いません。

  1. 誰かがアプリケーションにいてテーブルを開いている場合、再インデックス ルーチンは失敗するか、開いているファイルを再インデックスできません。すでに開いているテーブルをロックしようとしたときに、テーブルを再インデックスするプログラミングがエラーを処理する場合、「そのテーブルに対して何もしない」というあなたの考えは真実です。
  2. 再インデックス ルーチンが実行されていて、誰かがたまたまアプリケーション内にいる、またはアプリケーションを実行しようとすると、(共有モードで) テーブルを開くことができないため、エラーが発生したり、アプリがクラッシュしたりする可能性が高くなります。

テーブル破損の最も可能性の高い原因のリストを次に示します。ファイルのロックの問題について言及されていますが、それはメモ フィールドを含むテーブルに関係しています。これらのテーブルは、実際には 2 つのファイル (DBF [テーブル] と FPT [メモ]) で構成されます。何年もアプリを実行してきましたが、破損はまったくありませんでした。

于 2012-10-31T01:46:46.830 に答える
0

有効なメモ ファイルを破損したメモ ファイルの上にコピーして、データベースに再度アクセスします。

注 : 有効なメモ ファイルが破損したファイルの正確なバックアップでない限り、元のメモ フィールド情報は失われます。すべてのメモ フィールド バックアップ ファイルの拡張子は .TBK です。

破損したメモ ファイルには、OLD.FPT などの .FPT 拡張子が付きます。次の例では、NEW.FPT が有効なメモ ファイルであると想定しています。エラー メッセージをバイパスしてデータベースに再度アクセスするには、MS-DOS コマンド プロンプトで次のコマンドを入力します。

new.fpt をコピー old.fpt

于 2014-10-16T14:07:21.283 に答える