如何打开锁定的 mdb 文件?
Posted
技术标签:
【中文标题】如何打开锁定的 mdb 文件?【英文标题】:How can I open a locked mdb file? 【发布时间】:2009-03-23 21:19:39 【问题描述】:我有一个锁定 mdb 的数据库,因此我想备份。但是,我正在使用的工具(我有源代码)在备份文件之前会打开文件并发现它已被锁定。
有没有办法可以将其打开以用于只读目的?
作为参考,该工具使用 C# 和 .NET 2.0(但可以更新到 3.5)。
【问题讨论】:
【参考方案1】:您的工具锁定文件的原因是为了防止在备份文件时对其进行更改。例如,如果您开始备份,但在 DBMS(即 SQL Server)中途决定对文件进行更改,那么您的备份将会损坏。
我建议您使用随数据库解决方案提供的工具来执行备份。另一种选择是在备份之前停止数据库。
【讨论】:
不,他反了。数据库对文件有独占读锁,工具无法获取锁。马修则相反。 对,数据库对数据文件有一个排他锁,因为 DBMS 的编写者知道在数据库运行时复制文件不是一个好主意,所以他们锁定了它。这是为了防止你做你想做的事情。 在使用 Jet 后端时,您会使用哪些本机备份工具,如当前问题所示?您在回答之前确实阅读了它,对吧? 为什么是的,我确实阅读了您的问题。您在原始帖子中没有提到 Jet。我不熟悉用于 Jet 数据库的备份工具,但是无论 DBMS 是什么,问题都是一样的。尝试谷歌搜索。【参考方案2】:如果 DBMS 对文件持有写锁定,而您读取它,则您在读取文件时冒着 DBMS 写入文件的风险。根据写入的部分,您最终可能会得到文件的损坏备份。最好仅在 DBMS 不写入文件或让 DBMS 处理自己的备份时才读取文件。
【讨论】:
【参考方案3】:这类似于这个问题:
Opening a file's Shadow Copy if the current copy is in use
这取决于数据库如何打开 MDB 文件。如果它不允许读取共享,那么除非您能够打开卷影副本,否则您就不走运了。这里有一个关于如何做到这一点的讨论:
How do I copy a file or folder that is locked under windows programmatically?
【讨论】:
以上是关于如何打开锁定的 mdb 文件?的主要内容,如果未能解决你的问题,请参考以下文章