JetBeginExternalBackup 函数

适用于: Windows |Windows Server

JetBeginExternalBackup 函数

JetBeginExternalBackup 函数在引擎和数据库联机且处于活动状态时启动外部备份。 JetBeginExternalBackup 是一系列函数中的第一个函数,必须调用这些函数才能成功执行联机 (基于非 VSS 的) 备份。

外部备份可用于实现完整备份、增量备份或差异备份。

备份将是模糊的,这是因为备份将一致到事务历史记录中的单个时间点,但无法控制确切的时间点。

    JET_ERR JET_API JetBeginExternalBackup(
      __in          JET_GRBIT grbit
    );

parameters

grbit

一组指定以下选项的零个或多个位。

含义

JET_bitBackupAtomic

此标志已弃用。 使用此位将导致返回JET_errInvalidgrbit。

JET_bitBackupIncremental

创建增量备份,而不是完整备份。 这意味着仅备份自上次完整备份或增量备份以来的日志文件。

JET_bitBackupSnapshot

保留供将来使用。 为 Windows XP 定义。

返回值

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

返回代码

说明

JET_errSuccess

操作已成功完成。

JET_errBackupInProgress

如果外部备份或快照备份已在进行中,则会返回此错误,直到 jetBeginExternalBackup (或调用其) 的一个变体为止。 ESE 一次只允许一个联机备份。

JET_errBackupNotAllowedYet

实例或数据库引擎处于恢复或关闭或终止阶段。

JET_errCheckpointCorrupt

在完整备份中,无法读取检查点文件,或者无法验证该文件。

JET_errCheckpointFileNotFound

在完整备份中,找不到检查点文件。

JET_errClientRequestToStopJetService

由于调用 JetStopService,与会话关联的实例上的所有活动都已停止,因此操作无法完成。

JET_errInstanceUnavailable

操作无法完成,因为与会话关联的实例遇到严重错误,要求撤销对所有数据的访问权限以保护该数据的完整性。

Windowsxp: 此返回值在 Windows XP 中引入。

JET_errInvalidBackup

启用了循环日志记录,并且指定的备份类型JET_bitBackupIncremental。 有关如何控制循环日志记录或非循环日志记录的信息,请参阅事务日志错误中的JET_paramCircularLog

JET_errInvalidgrbit

一个或多个 grbit 成员无效。

JET_errLoggingDisabled

恢复或日志记录已禁用。 如果禁用日志记录,则无法执行联机备份。 有关日志记录和恢复的详细信息,请参阅 JET_paramRecovery

JET_errLogWriteFail

由于日志已满或磁盘 IO 错误,引擎已停止写入日志驱动器。

JET_errMissingFullBackup

增量备份是使用 JET_bitBackupIncremental) (指定的,并且从未为日志记录集的附加数据库之一进行完整备份。

JET_errNotInitialized

操作无法完成,因为与会话关联的实例尚未初始化。

JET_errOutOfMemory

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

JET_errRestoreInProgress

该操作无法完成,因为正在与会话关联的实例上执行还原操作。

JET_errRunningInMultiInstanceMode

操作失败,因为尝试在旧模式下使用引擎, (Windows 2000 兼容模式) 其中仅支持一个实例,但实际上已存在多个实例。

JET_errTermInProgress

操作无法完成,因为正在关闭与会话关联的实例。

如果函数成功,则会启动外部备份并初始化备份状态引擎。 现在可以调用后续 API 来完成外部备份序列和流式传输或读取数据库文件、 (数据库修补程序文件(如果支持) )和日志文件。 可以记录外部备份已开始的事件。

如果函数失败,则不会启动备份会话。 如果另一个备份会话正在进行中,则不会取消该会话。

备注

由 JetBeginExternalBackup) 启动的外部备份过程 (旨在允许将整个实例的模糊事务联机备份作为流备份到目标设备。 备份将包含使用 JetAttachDatabase (附加到实例的所有数据库文件,用于完整备份) ,后跟其关联的数据库修补程序文件(如果支持) (),最后是备份过程中生成的事务日志文件。 最终结果将是一组可从流中还原的文件,这些文件可能与现有数据库和日志文件结合使用,并最终恢复到一致状态。

完整备份的一般操作顺序包括以下调用。 首先,调用 JetBeginExternalBackup 来启动备份过程。 然后,调用 JetGetAttachInfo 以获取附加到需要备份的实例的数据库列表。 对于其中每个数据库,将调用 JetOpenFile ,然后调用多个 JetReadFile 调用,然后调用 JetCloseFile。 然后,调用 JetGetLogInfo 以获取要备份的数据库修补程序和日志文件的列表。 对于其中每个文件,将发出另一个 JetOpenFileJetReadFileJetCloseFile 调用序列。 然后,使用 JetTruncateLog 删除任何不需要的事务日志文件。 最后,通过调用 JetEndExternalBackup 结束备份。

还可以修改这组步骤以执行实例的增量备份。 增量备份枚举并备份日志文件。 仅当未启用循环日志记录时,才能进行增量备份。

还可以修改这组步骤,以允许执行实例的后续差异备份。 若要执行差异备份,请不要在上一次完整备份或增量备份中调用 JetTruncateLog 。 通过不调用 JetTruncateLog,可使后续备份相对于上次完整备份或增量备份产生差异。 仅当未启用循环日志记录时,才能进行差异备份。

数据库修补程序文件是一种特殊的辅助文件,用于在备份期间存储某些情况下的数据库页映像。 在还原操作期间,此文件必须与其关联的数据库位于同一位置。 此文件仅在 Windows 2000 中使用。 因此,任何针对 Windows 2000 和其他版本编写的应用程序都必须支持数据库修补程序文件(如果存在),但如果不存在,则也不得失败。

要求

要求

客户端

需要 Windows Vista、Windows XP 或 Windows 2000 Professional。

服务器

需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。

另请参阅

JET_ERR
JET_GRBIT
JET_INSTANCE
JetAttachDatabase
JetBeginExternalBackupInstance
JetCloseFile
JetEndExternalBackup
JetEndExternalBackupInstance2
JetGetAttachInfo
JetGetLogInfo
JetOpenFile
JetReadFile
JetStopBackup
JetTruncateLog