3

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

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

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

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

有没有办法恢复这样的备份?

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

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

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

提前致谢!

PS 我没有权限跨我的网络服务器上的进程,所以使用 eseutil.exe 不是一个选项。

4

1 回答 1

0

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

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

在这个简单的步骤之后,调用JetRestoreInstance API,它将从该文件夹恢复备份。

于 2016-05-21T02:15:53.367 回答