【问题标题】:How can I open a locked mdb file?如何打开锁定的 mdb 文件?
【发布时间】:2009-03-23 21:19:39
【问题描述】:

我有一个锁定 mdb 的数据库,因此我想备份。但是,我正在使用的工具(我有源代码)在备份文件之前会打开文件并发现它已被锁定。

有没有办法可以将其打开以用于只读目的?

作为参考,该工具使用 C# 和 .NET 2.0(但可以更新到 3.5)。

【问题讨论】:

    标签: c# .net database ms-access


    【解决方案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?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多