JetExternalRestore2 函数

适用于: Windows |Windows Server

JetExternalRestore2 函数

JetExternalRestore2 函数还原使用外部备份 API 进行的外部备份,并提供用于循环日志记录操作的检查点。 这称为硬恢复,它与 JetInit 函数执行的软恢复类似,但不同。

Windows XP:Windows XP 中引入了 JetExternalRestore2

    JET_ERR JET_API JetExternalRestore2(
      __in          JET_PSTR szCheckpointFilePath,
      __in          JET_PSTR szLogPath,
      __in_opt      JET_RSTMAP* rgrstmap,
      __in          long crstfilemap,
      __in          JET_PSTR szBackupLogPath,
      __in_out      JET_LOGINFO* pLogInfo,
      __in_opt      JET_PSTR szTargetInstanceName,
      __in_opt      JET_PSTR szTargetInstanceLogPath,
      __in_opt      JET_PSTR szTargetInstanceCheckpointPath,
      __in          JET_PFNSTATUS pfn
    );

参数

szCheckpointFilePath

如果未指定 szTargetInstanceCheckpointPath ,或者该路径具有活动实例或正在运行的实例,则恢复期间要使用的检查点文件的路径。

szLogPath

最后阶段日志的路径或目录 (撤消恢复) ,并可能撤消前滚日志。 此路径可能与 szBackupLogPath 相同。

rgrstmap

这是 JET_RSTMAP 结构的数组。 这是新旧数据库路径或文件名的映射。 之所以使用此选项,是因为可能需要将数据库恢复到备份位置以外的其他位置。 如果多个数据库附加到单个日志记录集,则还原映射可以指定要还原的数据库子集。

crstfilemap

rgrstmap 数组参数中的条目数。

szBackupLogPath

还原日志文件的目录的路径。 这些是外部备份序列期间读取的日志。 此路径可能与 szLogPath 相同。

pLogInfo

pLogInfo 描述了要恢复的备份日志的几个方面,此参数允许 JetExternalRestore2 采用 JetExternalRestore2 具有的显式 genLowgenHigh 参数,以及基本日志名称,而不是假定的日志基名称“edb”。

szTargetInstanceName

此参数已弃用,不能在应用程序中使用。

szTargetInstanceLogPath

如果要前滚的日志位置位于活动日志记录集或实例中,则前滚日志的路径。 如果目标实例使用循环日志记录,则不应指定此值。

szTargetInstanceCheckpointPath

如果此目标上没有活动实例运行,则恢复期间检查点的路径。 如果目标实例使用循环日志记录,则不应指定此值。

pfn

报告恢复进度的状态回调。

返回值

此函数返回具有以下返回代码之一 的JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误错误处理参数

返回代码

说明

JET_errSuccess

操作已成功完成。

JET_errBadRestoreTargetInstance

指定的 szTargetInstanceLogPath 不属于初始化实例。 此错误仅在 Windows XP 及更高版本中返回。

JET_errDatabaseCorrupted

这表示数据库已损坏或无法识别的文件。

JET_errEndingRestoreLogTooLow

如果 szBackupLogPath 中日志文件的日志生成高于 genHighpLogInfo.ulGenHigh 中指定的日志生成,则返回此错误。

JET_errFileNotFound

操作失败,因为它无法打开请求的文件,因为无法在指定路径中找到该文件。

JET_errInvalidParameter

提供的其中一个参数包含意外值或包含一个值,当与另一个参数的值组合时,该值没有意义。 当 szTargetCheckpointPathszTargetInstanceLogPath 未同时指定或两者未指定时,JetExternalRestore 可能会发生这种情况。 也就是说,它们必须匹配,并且都是指定或两者均未指定。

JET_errInvalidPath

操作失败,因为找不到指定的路径。

JET_errOutOfMemory

操作失败,因为无法分配足够的内存来完成此操作。

JET_errRestoreOfNonBackupDatabase

如果在还原期间指定的数据库文件不是使用外部备份进行备份的数据库,则返回此错误。

JET_errRunningInOneInstanceMode

数据库引擎无法在单实例模式下运行外部还原或硬恢复。 此错误仅在 Windows XP 及更高版本中返回。

JET_errStartingRestoreLogTooHigh

如果 szBackupLogPath 中的某个日志文件的日志生成低于 genLowpLogInfo.ulGenLow 指定的日志生成,则返回此错误。

成功后, rgrstmap 中的所有数据库将完全恢复,并且处于干净或一致状态。 此时,可以将数据库重新装载到现有实例。

发生故障时,引擎无法恢复数据库。 数据库处于无效状态,若要重试硬恢复,必须再次还原整个数据库。 通常,这种情况的根源是磁盘或日志损坏、某种其他形式的日志管理不力或非连续日志集。

备注

请参阅 JetExternalRestore

要求

要求

客户端

需要 Windows Vista 或 Windows XP。

服务器

需要 Windows Server 2008 或 Windows Server 2003。

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。

Unicode

实现为 JetExternalRestore2W (Unicode) 和 JetExternalRestore2A (ANSI) 。

另请参阅

JET_ERR
JET_LOGINFO
JET_PFNSTATUS
JET_RSTMAP
JetBeginExternalBackup
JetExternalRestore
JetInit