我正在开发一个应用程序,该应用程序将由一小群工作人员(最多 15 人)使用,并将数据存储在 Access accdb 文件中。当我自己在一台机器上测试应用程序时,我没有任何问题,但是当至少有两个人不时连接到数据库时,应用程序会给用户带来奇怪的错误。数据库存储在网络上的共享文件夹中,每个用户的应用程序都访问该文件夹以打开 db 文件。每个用户在 db 的机器上都有自己的系统帐户,并且代码中的每个函数都会锁定其他线程对 db 的访问,因此一次总是只有一个连接打开尝试。每个连接都在同一个函数中关闭。所有 db 函数都写在一个单例类中。
我得到的错误:
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 引擎存在已知问题,浪费我的时间在这方面毫无价值,开始使用会更简单、更快捷某种数据库服务器(MySQL)?