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