1

C#でParadoxデータベースにアクセスする方法を探しています。

問題は、ワークステーション上で、ターゲットデータベースを使用するすべてのプログラムが実行可能になっていることです。実行されるまでoleDbConnection.Open()、例外をスローします。

同じコンピューターから.NETでプログラムを実行していないが、別のWindowsワークステーションでプログラムを実行していて、共有フォルダーを使用している場合は、すべて正常に機能します。元のプログラムには読み取り/書き込みアクセス権があり、必要に応じて読み取り専用アクセス権があります。もちろん、2台目のコンピューターでは、NETDIRは共有フォルダー内の正しいディレクトリを指しています。

共有フォルダーを使用し、同じコンピューターで両方のプログラム(myとoriginal)を実行し、C#からParadoxデータベースへの共有フォルダー接続を使用するようにBDEを構成すると、開くことができません。

管理者アカウント権限で.NETからプログラムを実行しようとしましたが、役に立ちません。

そこで、もう1つのプログラムであるParadoxデータベースエディターを使用して、元のプログラムの実行中にテーブルの1つを編集しようとします。ユーザー権限で、ネットワークフォルダへのアクセスに関するエラーが発生します。ただし、管理者権限で実行している場合、およびParadoxデータベースエディターのみがユーザーアカウント権限でのみ実行されている場合でも、データベースを正常に読み取ることができます。

4

1 に答える 1

0

Paradox のロック機構に問題があるようです。Paradox (この場合は BDE) がテーブルにアクセスすると、テーブル ディレクトリ内の特別なロック ファイルにエントリを作成して作成することにより、テーブルに何らかのタイプのロックを配置します。これらは、特定の場所にある単一の Paradox.net ファイルによって制御されます。

現在のアプリケーションは BDE を使用しており、別のものを使用している可能性があるとおっしゃっていると思います。それができるかどうかはわかりませんが、できる場合は、同じロック ファイルと Paradox.net ファイルを使用する必要があります。また、同じ paradox バージョン ロジックを使用する必要があります。いくつかの Paradox バージョンで、このロック メカニズムにいくつかの変更がありました。各プログラムを個別に実行してみて、どのファイルがどこに作成されるかを確認してください。それらは同じものでなければなりません。

プライベート ディレクトリはそれほど重要ではないと思います。実際、2 人のユーザーが同じプライベート ディレクトリを持つことはできません。

于 2012-01-03T20:52:49.313 に答える