我应该如何备份多个正在使用的 MS Access 数据库?

我应该如何备份多个正在使用的 MS Access 数据库?

免责声明:我是一名软件工程师,而不是 IT 专业人士,如果我的一些建议愚蠢或荒谬,请原谅。

一个始终保持运行的 Windows 应用程序连接到多个 MS Access 数据库并不断与其交互。该应用程序可能随时读取或写入这些数据库中的任何一个。一些数据库很小,大小大致相同。一些数据库(相对)很大(几十万行),并且不断被追加。我们希望每隔 X 分钟备份这组数据库,而无需关闭应用程序。备份将在本地主机(第二块硬盘)或(100mbit)本地网络上进行。

该应用程序将在 Windows XP 或 Windows 7 上运行。

我确实意识到真正的解决方案是“停止使用 MS Access”,但目前这不是一个选项。

选项 1:复制文件

我们可以使用 Windows 复制(或 xcopy?)命令或某些(最好是免费的)第三方文件复制程序来复制文件。这样做有什么问题吗?

此选项的缺点是每次都要完全复制较大的数据库,这可能需要几秒钟的时间。如果在复制 MS Access 数据库时写入数据,会发生什么情况?(数据损坏?复制失败?)

选项 2:同步

我们可以运行一些第三方进程,使备份 MS Access 数据库与实时数据库保持同步。我查看过的许多现有程序都支持“真实”数据库引擎,如 SQL Server、Postgres 等,但似乎 MS Access 在这方面缺乏支持(或者也许我只是没有搜索正确的关键字)。

选项 3?

答案1

任何时候打开文件时,如果只是将其复制到另一个位置,就存在副本损坏的风险。正如您所提到的,Access 并不是真正意义上的多用户数据库,我不知道有哪些实用程序可以像大多数 SQL 数据库那样安全地将内容转储到另一个文件。

使用卷影副本可能会有一定运气。获取真正的 Windows 备份程序应该允许您执行此操作,因为它在块级别工作;Windows 的内置备份实用程序可能会为您完成此操作。这将解决文件锁定问题。

如果 Windows 备份解决方案不起作用,您可能需要有一个维护窗口,在该窗口中您只需关闭所有远程访问连接并创建一个简单的副本到另一个位置。

不过,最好的办法是获取一个支持在 NTFS 上进行文件锁定的情况下进行备份的备份程序。这将为您节省未来的管理麻烦,并避免使用胶带解决方案。

据我所知,没有办法对 Access 数据库进行群集或镜像。它根本不适合这样做,当组织达到这一水平时,他们通常会使用一个真正的数据库引擎,该引擎可以通过转储、群集或镜像支持备份,因此还有其他安装可用于进行“实时”备份。

答案2

选项 3:购买合适的工具!

您正在使用 Access 来实现它从未设计过的功能——高正常运行时间、高并发性、大容量数据存储。

Access 是一个玩具- 数据库王座的觊觎者,适合于业务不关键的小型项目。
您描述的用例是什么SQL 服务器是为了什么而生的。花钱买你需要的东西:一个可以处理高容量、高并发利用率的数据库,可以运行复制和/或备份,而不会对用户造成实质性影响。

相关内容