恢复完整的外部ESENT备份

时间:2010-11-27 00:33:00

标签: database-restore extensible-storage-engine

我编写了使用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。

1 个答案:

答案 0 :(得分:0)

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

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

完成此简单步骤后,请调用JetRestoreInstance API,它将从该文件夹恢复备份。