0

現在、会社のレガシー システムの問題をデバッグしようとしています。元のプロジェクトは 90 年代半ばに開発され、システムを知っていた全員が会社を去りました。現在、.DBF ファイルの 1 つでエラーが発生しています。この単純なテーブルは、4 ~ 5 列しか保持できず、行もほとんどありません。システムから送信されたメッセージは、Message.dbf を共有モードで開くことができないというものです。

データベースを排他モードで開く方法はありますか? DBFManager と Visual FoxPro 6.0 がセットアップされたシステムがあります。これらのタイプのデータベースに関する情報へのヒントやリンクは役に立ちます。これらのシステムの知識を持っている人は誰もいません。もっと詳しい情報を提供できればいいのですが、ここで途方に暮れています。

これまでのところ、ファイルをシステム上の複数のバックアップに置き換え、.DBF ファイルが置かれていたサーバーを再起動しようとしました (ロックの問題が発生した場合)。これまでのところ、問題は何も解決していません。

4

3 に答える 3

2

あなたはあなたがVFP6を持っていると言います...私はVFPを開くことから始めます。コマンドウィンドウで、次のように入力します

CD "C:\wherever Your Application Data is"    (enter)
use Message SHARED   (enter)
browse normal    (enter)

データの内容を確認できれば、ファイルに破損はありません。

これは明らかに、このような古いアプリケーションの最近の問題です。「共有」モードでファイルを開くことに言及した場合。ファイルを開くためのコードが追加されましたか?もしそうなら、「メッセージ」テーブルはすでに開かれていて、同じエイリアスで使用されていましたか?もしそうなら、それはそれが失敗する原因になります。2つの異なる作業領域で、同じ「エイリアス」名で同じテーブルを開くことはできません。この場合、次のようなことを行うことで解決できる可能性があります...

if used( "Message" )
   select Message
else
   select 0
   use Message
endif 

... continue with rest of code...

コメントごと/フィードバック

それがサーバーのシャットダウンによるものである場合、ファイルが無効な切断からユーザーによってロックされているように見える前に、私は見たことがあります。場合によっては、すべてのユーザーがログアウト/ログインし直して、サーバーへのすべてのリソースを強制的に解放する必要がありました...しかし、実際のSERVERをシャットダウンして再起動した場合、ユーザーセッションはとにかくクリアされます。サーバーがまだTHINKSでMessage.dbfテーブルが開いているのは誰かを確認します。さらに、必要に応じて、すべてのユーザーを追い出し、VFPのテーブルを手動で排他的に使用します。

また、データが配置されているフォルダー全体の単純なコピー/貼り付けを介してバックアップを実行します...次に、VFPを起動し、次の手順を実行します...

cd "whatever path"
use Message EXCLUSIVE
PACK
use

それがデータベースの一部であった場合、データベースは何らかの理由で/どこかで破損している可能性があります。それをテストするには...

cd "whatever path"
close all
open database YourDatabase Exclusive
Validate Database

そしてそれがあなたに何を与えるかを見てください

..。

もう1つコメント。NetWare(Novell)についておっしゃっていますね。私が過去に見たもの...最近システムから(つまり、NetWareから)削除されたユーザーはいますか?その場合、ファイルは元々「そのユーザー」によって作成されたものであり、そのユーザーがいなくなると、そのファイルで何かを行うためのすべての権限も失われます。管理者としてログインし、すべてのファイルを選択して、それらのファイルの「所有権を取得」するのが最善の方法です。管理者が追加/編集の制限を受けることはなく、ユーザーとして削除することもできないため、この問題が再び発生することはありません。繰り返しになりますが、私が歴史から思い出したもう1つのオプションは、問題の一部である可能性があります。

于 2012-04-11T18:38:01.823 に答える
1

私は何年もの間 NetWare に出くわしていませんでしたが、以前は Client32 For Windows がデフォルト設定を使用すると、FoxPro / Clipper DBF ロック メカニズムでうまく動作しなかったため、NetWare との絶え間ない戦いがありました。たとえば、これ。

于 2012-04-13T16:19:51.497 に答える
0

.dbf ファイルを開く際の問題を正確にデバッグすることはできませんでした。代わりに、数週間前のシステムのバックアップを見つけ、システム全体をその状態に復元することができました。プログラムは現在正常に動作していますが、当初の問題の原因を見つけることはできませんでした。

于 2012-04-25T14:53:25.683 に答える