我正在开发一个应用程序,它使用MS Access数据库作为后端(.mdb,而不是我的决定)。最近我遇到有人建议在WAN上使用JET引擎并不是一个好主意,因为数据损坏风险很高。由于我的应用程序应该这样做(连接到NAS上的数据库(编辑:不是NAS,共享共享网络驱动器),我很担心。这真的有风险吗?如果有,是否有任何解决方法或是MS Access数据库只是无法用于那种应用程序?
修改
前端是C#(WPF)中的.NET Windows桌面应用程序。系统没有很多用户,最多10个。大部分时间他们将从LAN接近数据库,99%的写入数据库将在局域网内完成(来自公司区域)。但是在某些情况下,他们将通过网络(来自他们的家)从公司外部连接到NAS(编辑:不是NAS,共享共享网络驱动器)。
答案 0 :(得分:1)
如果你有一个100 Mb / s的光纤,那就没关系了,但是如果你的线路是xDSL线路,那么它通常是绝对禁止的。
说服将后端移动到SQL Server等服务器引擎的权力,其中Express版本是免费的。
答案 1 :(得分:1)
您描述的方案不适合将Access数据库作为后端。 WAN用户很可能发现应用程序运行缓慢,但NAS是导致损坏的真正原因,这会影响LAN和WAN用户。
许多(大多数?)NAS设备在Linux上运行,并使用Samba提供Windows文件共享服务。 Access数据库引擎显然使用了Samba并不总是完全实现的“真实”Windows文件共享的一些低级功能(参考:here)。
事实上,我唯一一次看到共享Access后端(以及正确分布的前端)的重复损坏问题是客户端将文件共享从较旧的Windows服务器移动到较新的NAS设备。 Access应用程序在大多数情况下继续工作,但每隔几个月他们就会发现某些表的主键在后端数据库文件上执行压缩和修复后会消失。当他们的文件共享在Windows服务器上时,从未发生过这种情况。
答案 2 :(得分:0)
从后端拆分前端消除了大部分损坏风险。当然,使用Access总是有可能,如果你正在寻找降低风险接近零的东西,那么你可能想要考虑SQL Server或MySQL。但是,只要采取适当的预防措施,使用Access就可以了。
例如,您可能希望在将要编辑的表上查看记录锁定,以防止多个同时写入。定期备份数据库总是很好。