私は小さなワーカーチーム(最大15人)が使用するアプリケーションを開発しており、Access accdbファイルにデータを格納しています。私は1台のマシンで自分でアプリケーションをテストしているときに問題はありませんが、少なくとも2人がdbに接続しているときに、アプリケーションがユーザーに奇妙なエラーを出すことがあります。データベースはネットワーク上の共有フォルダに保存され、各ユーザーのアプリケーションはそのフォルダにアクセスしてdbファイルを開きます。各ユーザはdbのマシン上に独自のシステムアカウントを持ち、コード内の各機能は他のスレッドからdbへのアクセスをロックするので、一度に1つの接続開始試行が常に1つしかありません。各接続は同じ機能で閉じられています。すべてのdb関数は1つのシングルトンクラスで記述されています。C#/ MSアクセス:データベース接続エラー
私が取得エラー:
System.Data.OleDb.OleDbException (0x80004005): Could not use 'D:\Shared\nscm\nscm_db.accdb'; file already in use.
System.Data.OleDb.OleDbException (0x80004005): Cannot open database ''. It may not be a database that your application recognizes, or the file may be corrupt.
System.Data.OleDb.OleDbException (0x80004005): Too many active users. **(this error even when there's only two users!)**
これは狂気私を運転しています。 JET4/ACEエンジンでは、マルチユーザーアクセスを適切にサポートしていないという問題がありますか?
私はMS SQL Server ExpressやMySQLのような何かにdatabseを変更することを考えていますが、どちらが移行するのが最も簡単で、どちらが本当に無料であるか分かりません。
ご協力いただきありがとうございます。
更新日: データ変換は私にとって問題ではありません。アプリはまだ開発中ですので、実際のデータはありません。私は、コードとSQLクエリの変更についてもっと心配しています。他のDBテクノロジに切り替えた後に他の問題に遭遇しないかどうかはわかりません。
私の本当の疑問は、現在の技術で何かを修正しようと努力し続けるべきか、私は使用しているのか、それともAccess dbエンジンに関する既知の問題があるのか、それをもっと無駄にするのは無駄です。いくつかの種類のdbサーバー(MySQL)を使用するのが速くなりますか? http://www.bullzip.com/products/a2m/info.php
msアクセスGUIを開いてalter tableページを開いたままにしましたか? – nawfal