2010-11-27 171 views
3

我已经编写了使用JetBeginExternalBackup API创建ESENT数据库完整备份的代码。恢复完整的外部ESENT备份

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

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

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

有什么办法可以恢复这样的备份吗?

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

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

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

在此先感谢!

P.S.我没有权限跨越Web服务器上的进程,因此不能使用eseutil.exe。

回答

0

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

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

经过这个简单的步骤,请致电JetRestoreInstance API,它将从该文件夹恢复备份。