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 具有的显式 genLow 和 genHigh 参数,以及基本日志名称,而不是假定的日志基名称“edb”。
szTargetInstanceName
此参数已弃用,不能在应用程序中使用。
szTargetInstanceLogPath
如果要前滚的日志位置位于活动日志记录集或实例中,则前滚日志的路径。 如果目标实例使用循环日志记录,则不应指定此值。
szTargetInstanceCheckpointPath
如果此目标上没有活动实例运行,则恢复期间检查点的路径。 如果目标实例使用循环日志记录,则不应指定此值。
pfn
报告恢复进度的状态回调。
返回值
此函数返回具有以下返回代码之一 的JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误 和 错误处理参数。
返回代码 |
说明 |
---|---|
JET_errSuccess |
操作已成功完成。 |
JET_errBadRestoreTargetInstance |
指定的 szTargetInstanceLogPath 不属于初始化实例。 此错误仅在 Windows XP 及更高版本中返回。 |
JET_errDatabaseCorrupted |
这表示数据库已损坏或无法识别的文件。 |
JET_errEndingRestoreLogTooLow |
如果 szBackupLogPath 中日志文件的日志生成高于 genHigh 或 pLogInfo.ulGenHigh 中指定的日志生成,则返回此错误。 |
JET_errFileNotFound |
操作失败,因为它无法打开请求的文件,因为无法在指定路径中找到该文件。 |
JET_errInvalidParameter |
提供的其中一个参数包含意外值或包含一个值,当与另一个参数的值组合时,该值没有意义。 当 szTargetCheckpointPath 和 szTargetInstanceLogPath 未同时指定或两者未指定时,JetExternalRestore 可能会发生这种情况。 也就是说,它们必须匹配,并且都是指定或两者均未指定。 |
JET_errInvalidPath |
操作失败,因为找不到指定的路径。 |
JET_errOutOfMemory |
操作失败,因为无法分配足够的内存来完成此操作。 |
JET_errRestoreOfNonBackupDatabase |
如果在还原期间指定的数据库文件不是使用外部备份进行备份的数据库,则返回此错误。 |
JET_errRunningInOneInstanceMode |
数据库引擎无法在单实例模式下运行外部还原或硬恢复。 此错误仅在 Windows XP 及更高版本中返回。 |
JET_errStartingRestoreLogTooHigh |
如果 szBackupLogPath 中的某个日志文件的日志生成低于 genLow 或 pLogInfo.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