小規模なワーカー チーム (最大 15 人) が使用するアプリを開発しており、Access accdb ファイルにデータを保存します。1台のマシンで自分だけでアプリをテストしている場合は問題ありませんが、少なくとも2人がデータベースに接続している場合、アプリはユーザーに奇妙なエラーを与えます. データベースはネットワーク上の共有フォルダーに保存され、各ユーザーのアプリはそのフォルダーにアクセスして db ファイルを開きます。各ユーザーはデータベースのマシンに独自のシステム アカウントを持ち、コード内の各関数は他のスレッドからのデータベースへのアクセスをロックするため、一度に接続を開く試みは常に 1 つだけです。各接続は同じ関数で閉じられます。すべての db 関数は、1 つのシングルトン クラスで記述されます。
私が得るエラー:
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 などの別のものに変更することを考えていますが、どれが移行しやすく、どれが本当に無料なのかわかりません。
あなたの助けと注意を前もってありがとう!
更新: データ変換は私にとって問題ではありません。アプリはまだ開発中のため、実際のデータはありません。私は、コードと SQL クエリの変更についてもっと心配しています。また、他の db テクノロジに切り替えた後、他の問題が発生しないかどうかもわかりません。
私の本当の質問は、現在のテクノロジーで何かを修正するために努力し続ける必要があるか、Access dbエンジンを使用しているか、既知の問題があるかです.これに時間を無駄にするのは無駄です.ある種の db サーバー (MySQL)?