我编写了使用JetBeginExternalBackup API创建ESENT数据库完整备份的代码。
遵循MSDN准则,我备份了JetGetAttachInfo和JetGetLogInfo返回的每个文件。
我已经进行了备份,删除了旧数据库,并将备份数据复制到数据库文件夹中。 数据库引擎无法启动,JetInit错误代码为“JET_errMissingLogFile”。
我检查了备份,它只包含数据库文件,以及“< inst> XXXXX.log”日志文件。它缺少当前的日志文件(我正在使用循环日志记录,BTW)。
有没有办法恢复这样的备份?
我不想使用JetExternalRestore API,因为它太复杂了:我不需要恢复到另一个位置,我不明白为什么有3个输入文件夹不是2,我不知道genLow和genHigh参数中提供的值。
我确实需要外部备份:ASP.NET在远程服务器上使用ESENT数据库,我通过Internet备份它。
或者,也许有办法检索当前日志文件的名称,我应该将它添加到备份中吗?
提前致谢!
P.S。我没有权限跨越我的Web服务器上的进程,因此不能使用eseutil.exe。
答案 0 :(得分:0)
将所有备份文件解压缩到一个文件夹中。
获取主数据库文件的名称。将扩展名替换为.pat
。使用该名称创建零长度文件,例如database.pat
。
完成此简单步骤后,请调用JetRestoreInstance API,它将从该文件夹恢复备份。