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

免责声明:我是一名软件工程师,而不是IT专业人员,如果我的一些build议是愚蠢的或其他荒谬的话,很抱歉。

一个将始终保持运行的Windows应用程序连接到多个MS Access数据库,并不断与其交互。 应用程序可以随时读取或写入任何这些数据库。 一些数据库很小,保持大致相同的大小。 一些数据库是(相对)大(几十万行),并不断追加。 我们希望每隔X分钟备份一组数据库,而不closures应用程序。 备份将位于本地主机(第二个硬盘驱动器)或(100mbit)本地networking上。

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

我意识到真正的解决scheme是“停止使用MS Access”,这是目前不是一种select。

选项1:复制文件

我们可以使用windows copy(或xcopy?)命令或者一些(最好是免费的)第三方文件复制器来复制这些文件。 这有什么问题吗?

这个选项的缺点是每次都会复制较大的数据库,这可能需要几秒钟的时间。 MS Access数据库正在被写入时正在被复制时会发生什么? (数据损坏?未能复制?)

选项2:同步

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

选项3?

任何时候当你打开一个文件时,只要将它复制到另一个位置,就会冒着损坏的副本的风险。 正如你所暗示的,Access并不是真正意义上的多用户数据库,我不知道如何将大多数SQL数据库安全地将内容转储到另一个文件的实用程序。

使用卷影副本可能会有一些运气。 获得一个真正的Windows备份程序应该允许你这样做,因为它在块级别上工作; Windows的内置备份工具可能会为你做。 这将解决文件locking问题。

如果Windows备份解决scheme不起作用,您可能必须有一个维护窗口,您只需closures所有远程访问连接并创build一个简单副本到另一个位置即可。

最好的办法是获得一个支持备份的备份程序,尽pipe在NTFS上有文件locking。 这将为您节省pipe理难题,避免pipe道胶带解决scheme。

据我所知,没有办法对Access数据库进行群集或镜像。 它并不意味着这一点,当一个组织达到这个级别时,他们通常使用一个真正的数据库引擎,通过转储,集群或镜像来支持备份,所以还有其他的安装来进行“实时”备份。

选项3: 购买正确的工具!

您正在使用Access从未devise的function – 高运行时间,高并发性,大容量数据存储。

Access是一个玩具 – 数据库宝座的伪装者,适用于非关键业务的非常小的项目。
你描述的用例是SQL Server的。 花钱,得到你所需要的:一个数据库,可以处理大容量,高并发利用率,复制和/或备份,可以在不影响你的用户的情况下运行。