2012-01-02 11 views
1

C#でParadoxデータベースにアクセスする方法を探しています。C#JETと別のプログラムでParadoxデータベースを使用する並列

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

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

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

.NETからAdministratorアカウントの権限でプログラムを実行しようとしましたが、役に立たない。

私は他のプログラムParadoxデータベースエディタをとり、元のプログラムが動作しているときにテーブルの1つを編集しようとします。ユーザーの権利で、ネットワークフォルダへのアクセスに関するエラーが表示されます。しかし、管理者権限で実行すると、Paradoxデータベースエディタだけがユーザーアカウント権限でのみ実行されている場合と同様に、データベースを正常に読み取ることができます。

+0

IIRCまた、「プライベートディレクトリ」が必要です。異なる(コピーの)プログラムが異なるパスを使用していることを確認しましたか? –

+0

私は、この「プライベートディレクトリ」をどこに定義するべきかはわかりません。 BDE管理者またはOleDbConnectionの接続文字列。 –

答えて

0

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

私は、現在のアプリケーションがBDEを使用しており、あなたが何か他のものを使用している可能性があると言います。私はあなたがそれを行うことができるかどうかはわかりませんが、可能ならば、同じロックファイルとParadox.netファイルを使用する必要があります。また、同じパラドックスバージョンのロジックを使用する必要があります。 Paradoxのいくつかのバージョンでは、このロック機構にいくつかの変更が加えられました。別々に各プログラムを実行し、作成するファイルとその場所を確認してください。それらは同じものでなければなりません。

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

+0

ヘンクのコメントの後、私はGoogleを掘り起こし、興味深いものを見つけましたhttp://sgbd.developpez.com/PDox%20Survival%20Guide.rtf。ディレクトリc:\ application \ iには、最後にPRIVDIRとMYDATAの2つのディレクトリがあります。 元のアプリケーションをprivdirで使用すると、PDOXUSRS.NET、Paradox.lck、PDOXUSRS.LCK、MYDATA Paradox.lck、PDOXUSRS.LCK で使用されます。.NET Frameworkでのクエリは、MYDATA PDOXUSRS.LCKおよびPARADOXのprivdir PDOXUSRS.NETで行われます。 LCK。 .NET Frameworkでクエリを実行すると、PRIVIRにParadox.lck、PDOXUSRS.LCKが生成されません。アプリケーションは別々に実行されました。 .NETクエリのプライベートディレクトリを指定する方法は? –

+0

ここでは、プライベートディレクトリhttp://www.progware.org/Blog/post/Connecting-to-a-PARADOX-DB-with-C-%28Vista-XP%29.aspxを設定する方法と、 .NETファイル。 同時実行 マルチユーザー環境では、Paradox 4.0のロックプロトコルは、PDOXUSRS.NETファイルによる同時実行性(アプリケーションの同時使用)を維持します。 Paradoxテーブルを共有するすべてのユーザーは、同じパスを使用して同じ方法で同じPDOXUSRS.NETファイルにマップする必要がありますが、必ずしも同じドライブ文字である必要はありません。 –

+0

はい、すべてのアプリケーションとすべてのユーザーが1つのPdoxusrs.netファイルを使用する必要があります。このファイルは、マルチユーザーアクセスを制御します。これは、アクセスされる各テーブルに2つの.lckファイルを作成することで行います。しかし、ユーザーがテーブルを終了すると、それらの.lckファイルも削除されるので、システムに.lckファイルを置くべきではありません。あなたがそうしていて、誰もそれらのアプリを実行していない場合は、それらを削除することができます。そして、あなたは何かが完了していないし、適切にクリーンアップしている必要があります、そして、彼らは問題を引き起こすでしょう。 –

関連する問題