将记录加载到RAM中时是否从mdb文件中删除了记录?

时间:2014-02-17 10:19:45

标签: ms-access

我正在阅读article关于通过网络使用访问数据库的问题。

我对他写的内容的理解是,当请求记录时,它们被加载到请求它们并从mdb文件中删除的计算机上的RAM中。

问题是,如果网络出现故障,则无法重新组装文件,因为记录无法恢复,数据库也会损坏。

这真的发生了什么? 我原本以为记录只会被复制出来,也许会在数据库中的那些记录上放置标记。

2 个答案:

答案 0 :(得分:2)

我从来没有遇到任何让我相信暂时从数据库中删除开放记录的理由,但这是您的酸测试:将数据库中的记录加载到网络上的一台计算机上。保持该记录打开,然后转到网络上的另一台计算机。加载相同的记录。如果记录打开,它就不会从数据库中消失。

答案 1 :(得分:2)

我可能是那篇文章的作者。参考的图是这一个:

enter image description here

在上面我们看到的图片中,“块”数据从磁盘驱动器中拉出并进入计算机RAM。

因此原始记录当然仍然在硬盘上。我认为图表应该在那些洞的位置有更多的“阴影”。然而,这样做有助于解释。因此,“原始”数据+记录存在于磁盘驱动器上 - 它们不会被删除。

所以它不仅仅是拉动记录的行为。此问题实际上仅在记录位于您的计算机RAM(右上方)并且您修改这些记录时才存在。左上方的“漏洞”显示了您的计算机ram中需要更新的记录(更新发生在您的ram中)。

在大多数情况下,如果记录实际上没有通过网络从您的ram流回并返回到硬盘驱动器,则此时连接中断不会导致损坏。

然而,一旦数据开始流动,那么是的,连接的中断非常像星际迷航中的运输商。是的,上面的图片和图表确实传达了这个问题。

所以只是拉扯记录并打破条件?不,不太可能导致腐败。

只是拉一些记录而且它们“待定”(脏)并需要回写?此时网络中断可能不会导致腐败。

然而,一旦记录开始回程,那么网络连接的中断是相当严重的,然后是数据库中缺少“漏洞”的问题成为一个问题 - 由于“返回”记录正在进行,因此损坏成为一个真正的高概率推送和推动该磁盘驱动器上的现有记录。

在Access中使用事务无济于事。造成这种情况的主要原因是,使用基于文件的后端时,Access不会将RECORDS写入磁盘驱动器,而只会写出Windows文件。因此,文件可以包含Power Point或Excel或Access数据。计算机不知道或关心什么是写出来,但只是你正在写一个文件到磁盘驱动器。

因此,使用基于文件的后端的Access正在写入Plane Jane文件窗口文件。我们正在文件级而不是记录级别工作。这当然是为什么在使用SQL服务器时,Access中不会出现文件级别损坏。 Access NEVER直接写入文件,服务器端的SQL服务器确实如此。

因此,切断网络连接就像切断与磁盘驱动器的连接一样。你没有削减记录的写入,因为你正在削减磁盘驱动器上实际文件的部分写入。

使用SQL服务器时,切断网络连接意味着记录停止从Access客户端流出,但是写入实际SQL服务器文件的磁盘驱动器出现在服务器端,并且不受影响也不会被切断。

因此,腐败可能发生的主要问题仅仅是客户端在互联网上使用Windows文件系统。使用基于服务器的技术时,如果关闭计算机不会影响www.amazon.com上的图书订购系统,则不会发生这种情况。使用基于服务器的系统时,完全相同的推理适用于Access - 切割Access不会影响服务器端的事物。您可能无法获取向下发送网络管道的记录,但这仅表示某些记录永远不会被发送回服务器以保存到本地文件(但是保存到本地文件发生在服务器端 - 而不是通过Access )。

在网络上使用Windows文件系统是造成腐败风险的原因。使用事务等也无济于事,也不会消除您不将记录写入磁盘驱动器但实际跟踪硬盘驱动器FILE级别的扇区的事实。