紧凑的拆分/共享访问数据库

问题描述 投票:1回答:1

我有一个拆分的(前端.accdb +后端.accdb)Access 365数据库,在某些用户之间共享。

我想通过VBA定期对其进行压缩/修复,但是我想知道当多个用户同时使用它时会发生什么。

  1. 我认为当连接多个用户时不可能做这种事情,我错了吗?

  2. 如何检查是否连接了多个用户?信号量系统可能很弱。

vba ms-access database-connection shared
1个回答
0
投票

您需要在前端代码中进行一些小的更改,以便每个用户定期检查一个后端值,以表明该后端是否可用或可用。当我说定期检查时,最好在每次创建,更新或删除操作时都检查一下(读取不重要)。

例如,我以前在前端和后端都保留了一个tbl_Kvs(键值存储),用于存储客户端和服务器的全局变量,后端tbl_Kvs中的键之一是dbReadOnly = 0 (零表示错误,是“正常”操作模式,允许对用户进行完全CRUD访问。)

管理员可以进入并设置dbReadOnly = 1(或任何其他非零值),这从该时间点开始有效地将后端置于只读状态(前提是您的前端代码要适当考虑dbReadOnly变量)。

现在您的后端文件已被有效隔离,您可以随意复制该文件并进行压缩/修复,而现有的后端仍以只读方式为用户提供服务。

当所有用户都注销后,您可以将新压缩的后端副本切换为实时副本,并重置dbReadOnly = 0以重新允许写入操作。

如果您不想等待所有用户自愿关闭其连接,则可以在dbReadOnly = 1时重新编码前端以关闭应用程序,然后拒绝任何新的尝试连接(但是我从来不需要在我的方案中使用强制用户启动)。

© www.soinside.com 2019 - 2024. All rights reserved.