代码之家  ›  专栏  ›  技术社区  ›  Soonts

还原完整的外部ESENT备份

  •  3
  • Soonts  · 技术社区  · 15 年前

    我用JetBeginExternalBackup API编写了创建ESENT数据库完整备份的代码。

    按照MSDN指南,我备份了JetGetAttachInfo和JetGetLogInfo返回的每个文件。

    我做了备份,删除了旧数据库,并将备份数据复制到数据库文件夹。 数据库引擎无法启动,JetInit错误代码为“JET_errMissingLogFile”。

    我已经检查了备份,它只包含数据库文件和“<inst>XXXXX.log”日志文件。它缺少当前的日志文件(顺便说一句,我正在使用循环日志)。

    有没有办法恢复这种备份?

    我不想使用JetExternalRestore API,因为它太复杂了:我不需要还原到另一个位置,我不明白为什么有3个输入文件夹而不是2个,我也不知道genLow和genHigh参数中要提供的值。

    我确实需要外部备份:ESENT数据库由远程服务器上的ASP.NET使用,我正在通过Internet进行备份。

    或者,也许有一种方法可以检索当前日志文件的名称,我应该将其添加到备份中?

    提前谢谢!

    注意:我没有权限在我的web服务器上跨越进程,因此使用eseutil.exe不是一个选项。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Soonts    10 年前

    将所有备份的文件解压到一个文件夹中。

    获取主数据库文件的名称。将扩展名替换为 .pat . 使用该名称创建零长度文件,例如。 database.pat .

    在这个简单的步骤之后,打电话给 JetRestoreInstance API,它将从该文件夹还原备份。