JetRestore 函数
适用于: Windows |Windows Server
JetRestore 函数
JetRestore 函数还原和恢复实例的流式备份,包括所有附加的数据库。 此函数主要用于向后兼容 Windows 2000 和更早版本的数据库引擎,其中仅允许一个数据库实例。 在这种情况下,活动实例是还原的实例。 使用 JetRestore 时,无法指定还原的数据库的位置。
JET_ERR JET_API JetRestore(
__in JET_PCSTR sz,
__in JET_PFNSTATUS pfn
);
parameters
sz
备份所在的文件夹。 备份应是使用 JetBackup 函数生成的。
pfn
指向函数的可选指针,该函数将作为有关还原操作进度的通知信息调用。
返回值
此函数返回具有以下返回代码之一 的JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误 和 错误处理参数。
返回代码 |
说明 |
---|---|
JET_errSuccess |
操作已成功完成。 |
JET_errAlreadyInitialized |
操作失败,因为已为此实例初始化引擎。 |
JET_errInvalidLogSequence |
备份集和当前日志路径中的日志文件集不匹配。 |
JET_errInvalidParameter |
提供的其中一个参数包含意外值或包含一个值,当与另一个参数的值组合时,该值没有意义。 |
JET_errInvalidPath |
操作失败,因为实例) 的备份路径、目标路径、日志或系统路径 (提供的某些路径无效。 |
JET_errPageSizeMismatch |
操作失败,因为引擎配置为使用数据库页大小 (使用 JetSetSystemParameterJET_paramDatabasePageSize) ,该大小与用于创建事务日志文件的数据库页大小或与事务日志文件关联的数据库页大小不匹配。 |
JET_errRunningInMultiInstanceMode |
操作失败,因为参数隐含单实例模式 (Windows 2000 兼容模式) 并且引擎已处于多实例模式。 |
成功后,备份集中的数据库文件将还原到其位置,并运行恢复,使数据库处于干净的事务一致性状态。 恢复将重播备份集中的日志文件和日志路径中的日志文件(如果此类文件确实存在)。 此恢复将导致检查点文件、事务日志文件以及这些事务日志文件引用的任何数据库发生更改。
失败时,实例将保持未初始化状态。 在尝试初始化还原和恢复数据库时,事务日志文件和这些事务日志文件引用的任何数据库的状态可能已更改。
备注
恢复过程将在备份期间重新构造附加到实例的数据库,并将更改保存回数据库文件。 结果将是事务一致的数据库。 如果可能,它还会将自备份以来完成的更改保存到数据库,直到事务日志中找到最新更改。 如果创建备份后生成的事务日志仍存在于事务日志目录中,则可能会发生这种情况。 请注意,如果为 实例启用了循环日志记录,则会重复使用生成的事务日志,以便恢复能够保存备份时刻发生的更改。 在任何情况下,如果针对数据库重播的事务日志文件数很大,则此过程可能需要相当长的时间。
必须先在实例上调用 JetRestore 函数,然后才能为该实例调用 JetInit。
由于在恢复期间将使用大量数据库页和事务日志,因此这些函数可能会返回一系列错误。 此类错误可能从临时资源分配失败(如Jet_errOutOfMemory)到表示物理损坏(如JET_errReadVerifyFailure、JET_errLogFileCorrupt或JET_errBadPageLink)的错误。 这些错误几乎总是由硬件问题引起的,因此无法避免。 文件管理不力通常表现为JET_errMissingLogFile、JET_errAttachedDatabaseMismatch、JET_errDatabaseSharingViolation或JET_errInvalidLogSequence。 应用程序可以避免这些错误。 应用程序必须小心保护这些文件的存储库不受外部力量(如用户或其他应用程序)的操纵。 如果应用程序希望完全销毁实例,则必须删除与该实例关联的所有文件。 其中包括检查点文件、事务日志文件和附加到实例的任何数据库文件。
恢复的不同步骤将生成事件日志条目,包括事务日志重播进度和还原的最终结果。
要求
要求 | 值 |
---|---|
客户端 |
需要 Windows Vista、Windows XP 或 Windows 2000 Professional。 |
服务器 |
需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 |
标头 |
在 Esent.h 中声明。 |
Library |
使用 ESENT.lib。 |
DLL |
需要ESENT.dll。 |
Unicode |
作为 JetRestoreW (Unicode) 和 JetRestoreA (ANSI) 实现。 |
另请参阅
JET_ERR
JET_GRBIT
JET_INSTANCE
JetBackup
JetBackupInstance
JetCreateInstance
JetSetSystemParameter