7.2 拆分数据库与多用户部署


7.2 拆分数据库与多用户部署

本节摘要:拆分是 Access 多用户部署的基准动作:数据后端独一份,程序前端人手一份,中间用链接表牵手。本节完成华彩的拆分手术全程——向导、重定向、前端瘦身与版本升级的分发套路,一次讲透。

第 6.3 节预告过的"性价比之王"正面登场。先回答最基本的问题:为什么要拆?

一、单文件的死法与双文件的活法

想象五个同事同时打开同一个文件:每个人手里的窗体代码都驻留内存却共享同一份磁盘页,Access 只能靠锁机制仲裁;某人更新前端(加个按钮)必须等所有人退出才能保存;某次网络闪断恰好赶上写入,文件受损全体遭殃。这些问题在双文件结构下全部消失:

  • 后端库:只有表和关系,躺在主机或受控路径上,孤本;
  • 前端库:查询、窗体、报表、宏、模块,每人桌面一份拷贝,连着链接表指回后端。

各开各的前端互不干扰,录单的撞不上出报表的;界面改版只替换自己机器上的前端,无须全司停机;就算某个人的前端文件损坏,删掉重拷三十秒恢复。一句话总结其经济学:把易变易损的程序层与唯一宝贵的资产层分开投保。

二、手术过程:十分钟一切两半

开工前老规矩:备份全量一份(7.3 会把它制度化)。然后跟着做:

  1. 在数据库工具组找到"Access 数据库"拆分按钮点下去(老版本藏在"移动数据"组里),弹出的向导确认后端存放位置——选那个受控的共享路径;
  2. 向导跑完自动生成两个文件:原文件名加下划线 back 字样的后端,原名不变的前端。此刻你正处在拆好的前端里;
  3. 打开后端确认所有表都在且关系保留;回到前端看表列表,每张表名前多了个箭头图标——它们已变成链接表;
  4. 双击任何一个录单窗体试运行一轮完整业务流程。正常的话链接机制是无感的:DAO 代码、宏、窗体全部照旧工作,因为对象模型层面链接表与本地表的差别几乎为零。

有一步容易被忽视但要补上:链接表管理器里核对每个链接指向的路径写法。若当初选位置时用了映射盘符而同事机器上盘符不同,会集体报找不到。稳妥做法是统一使用完整的 UNC 通用命名约定路径(就是双反斜杠开头那种服务器地址写法),或干脆所有人约定同一盘符并纳入装机清单。

图题:拆分后的物理形态与日常动线

图题:拆分后的物理形态与日常动线

三、多用户的锁与脾气

多人同写时引擎靠锁维持秩序,两个设置决定体验走向:

  • 打开模式:共享方式打开是常态;独占排他只在维护动作时启用;
  • 记录级锁定选项:默认的整页锁定可能让相邻记录互相连坐,在选项里切到"编辑该记录的记录"粒度更合理,并发冲撞概率明显下降。

即便配置正确,"写入冲突"对话框仍会在两人前后脚改同一行时出现。与其消灭它,不如规定流程绕开它:华彩的做法是订单归属即责任——一人一张单从头跟到尾,别人只读不改。软件约束加流程约束双保险,冲突频率趋近于零。

四、升级分发:别再挨个换文件

前端迟早要迭代。手工挨台机器覆盖的下场是总有台电脑被遗忘,三个月后出现两个版本打架。两个轻方案任选其一落地:

方案甲 启动器批处理:给每位使用者桌面上放的不是前端本体而是一行启动命令的小脚本——它先比对共享目录上"最新版号.txt",一致才打开本地前端,不一致则先自动复制新版。免费、透明、零依赖。核心逻辑十行以内:

if 版本不同 then copy 服务器上新前端 覆盖 本地 end if start 本地前端

方案乙 宏自检弹窗:在 AutoExec 里 DLookup 一个版本对照表,发现落后就弹提示让人去共享目录双击新版本。偷懒版但胜在零脚本知识门槛。

无论哪种,配套纪律是版本号进窗体标题(主控台右下角一行小字 V2.3.1 式样)——用户报障时报得出版本,你排查的方向感能节省一半时间。这套思想到 7.4 会扩展成完整的变更日志制度。

五、宿主与网络的讲究,比想象中多

后端文件放哪台机器、走什么线路,直接决定系统的脾气。三条硬经验:

别用个人工作机当服务器。 后端放在某位同事的桌面电脑上,等于全公司的数据资产押注在他不重启、不休眠、不被老板拿去开会这三件事上。正确宿主是那台常年开机的 NAS 或专用小主机,权限只开放数据目录。

无线网络是隐性的头号杀手。 笔记本跨房间漫游、信号弱一格的一瞬,正在写入的连接中断,轻则报错重则后端受损。凡是通过 Wi-Fi 用系统的岗位,验收时必须连续压测一周——华彩仓库那台老笔记本换上电力猫之后,"莫名其妙的写入错误"从每周三五次降到零。

休眠设置要检查。 若宿主机器整点自动睡眠,所有前端同时挂断。把它和它的电源计划都调成永不离席,这类"下班没人动过啊"的悬案就消失了。

追问频率最高的两个场景顺带回答。问:两个办公地点怎么办? 公平但直接的答案是:物理距离超过一个局域网的范围,这章的方案就开始吃力,虚拟专网加远程桌面的组合可以过渡,真正的解法在 6.3 的阶梯高位或第 8 章的服务器升迁里。问:一台新电脑接入怎么最快? 装好 Access 或 Runtime,把启动脚本拷上桌面双击,输入 UNC 路径验证通——五分钟的事,写进交接文档省掉每次电话教学。

五、拆分之后的世界:三个后续问题

手术做完只是开始,以下三件事迟早出现,先备好答案。

前端怎么越用越肥? 有人把临时导出、本地中间表随手堆进前端,三个月后前端比后端还大,每次打开都拖慢半拍。立一条规矩:前端只放程序对象和确需个人暂存的查询,季度体检时给超重的前端做一次"另存重建"。它体现的还是那句老话——分层的目的各司其职,混装就是倒退回拆分前夜。

新同事入网有没有固定流程? 写成五步便签放在【发版】文件夹里:装好环境、拷贝启动脚本、设置受信任位置、跑一张测试单、登记进权限台账。第五步总被忽略,但未来追究"这行数据是谁改的"时全指望它。

换了路由器之后集体打不开怎么办? 只要共享目录的主机名没变就无事;若真的更名,用链接表管理器刷新一遍指向即可,别像某个倒霉团队那样删光链接重连还顺手清了表。三则问题一个主题:拆分是持续运行的架构而不是一次性的手术,它要以制度的形式活下去。

本节手术要点

  • 拆分的收益本质是风险隔离:资产孤本集中看护,程序多点冗余。
  • 手术三步一查:向导切割、核验两端、确认箭头图标,最后必测全流程。
  • 链接路径统一 UNC 写法防盘符漂移;记录级锁定降低连坐误伤。
  • 升级靠启动器脚本或版本自检宏自动化,窗体常显版本号是好习惯。

系统安全上岗了。让它长命百岁的例行功课,下一节交作业日历。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U