JetOSSnapshotFreeze 函数

适用于: Windows |Windows Server

JetOSSnapshotFreeze 函数

JetOSSnapshotFreeze 函数启动快照。 当快照正在进行时,引擎不会发生写入磁盘的活动。

Windows XP:JetOSSnapshotFreeze 在 Windows XP 中引入。

    JET_ERR JET_API JetOSSnapshotFreeze(
      __in          const JET_OSSNAPID snapId,
      __out         unsigned long* pcInstanceInfo,
      __out         JET_INSTANCE_INFO** paInstanceInfo,
      __in          const JET_GRBIT grbit
    );

parameters

snapId

快照会话的标识符。

pcInstanceInfo

作为快照会话的一部分的引擎中当前运行的实例数。

paInstanceInfo

结构数组,每个作为快照会话一部分的正在运行的实例,描述实例及其所属的数据库。

grbit

此调用的选项。 此参数保留供将来使用,支持的唯一有效值为 0。

返回值

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

返回代码

说明

JET_errSuccess

操作已成功完成。

JET_errInvalidParameter

为输出参数提供的指针为 NULL、快照会话无效或 grbit 参数无效。

JET_errOSSnapshotInvalidSequence

快照会话未处于启动冻结 (的相应状态,例如,在) 之前,此会话上的上一个冻结失败。

JET_errOSSnapshotNotAllowed

引擎未处于可执行快照的状态。 一个或多个流式备份已在进行,或者一个或多个实例正在执行恢复步骤或终止。

JET_errOSSnapshotInvalidSnapId

快照会话的标识符无效。

JET_errOutOfMemory

函数由于内存不足而失败。

JET_errOutOfThreads

函数失败,因为执行冻结的新线程无法启动。

如果此函数成功,则不会为数据库文件或属于已冻结实例的日志文件发出任何写入 IO。 此外,实例信息将被正确填充,并且稍后必须通过调用 JetFreeBuffer 和指向返回的实例信息数组的指针来释放该信息。

如果此函数失败,引擎将保持正常运行,IO 照常发生。 如果冻结失败,则无需调用 JetOSSnapshotThaw 。 此外,实例信息不会填充,因此无需释放此资源。

备注

在冻结期间,不会向附加数据库或事务日志发出任何写入 IO,但可能会向临时数据库或流式处理文件发出写入 IO。

数据库和日志文件在冻结期间的状态 (文件在卷快照映像) 的状态,以便以后还原这些文件时可以正常恢复。

由于冻结期间没有写入操作,因此在该时间间隔内,对引擎的正常 API 调用可能会停止。 客户端应用程序必须能够处理 API 调用,如果发生冻结,可能需要更长时间才能正常进行。

由于上述可能的影响,存在内部超时,在此之后,即使未调用执行解冻或中止的 API,快照会话也会停止冻结阶段。 可以使用 JET_paramOSSnapshotTimeout 系统参数更改超时值。 请注意,典型的冻结间隔在 10 秒的范围内,默认超时大约为 60 秒。

要求

要求

客户端

需要 Windows Vista 或 Windows XP。

服务器

需要 Windows Server 2008 或 Windows Server 2003。

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。

Unicode

实现为 JetOSSnapshotFreezeW (Unicode) 和 JetOSSnapshotFreezeA (ANSI) 。

另请参阅

JET_ERR
JET_INSTANCE_INFO
JET_OSSNAPID
JetOSSnapshotAbort
JetOSSnapshotPrepare
JetOSSnapshotPrepareInstance
JetOSSnapshotThaw