JetCommitTransaction2 函数
适用于: Windows |Windows Server
JetCommitTransaction2 函数在当前保存点期间提交对数据库状态所做的更改,并将其迁移到上一个保存点。 如果提交最外层的保存点,在该保存点期间所做的更改将提交到数据库的状态,会话将退出事务。
JetCommitTransaction2 函数是在Windows 8操作系统中引入的。
JET_ERR JET_API JetCommitTransaction2(
__in JET_SESID sesid,
__in JET_GRBIT grbit,
__in DWORD cmsecDurableCommit,
__out JET_COMMIT_ID pCommitID
);
parameters
sesid
用于此调用的会话。
grbit
一组位,指定下表中列出的零个或多个值。
值 |
含义 |
---|---|
JET_bitCommitLazyFlush |
事务会正常提交,但此 API 不会等待事务刷新到事务日志文件,然后再返回到调用方。 这大大缩短了提交操作的持续时间,但代价是持久性。 在崩溃恢复期间,在下次调用 JetInit 函数期间,任何未在崩溃前刷新到日志的事务都会自动中止。 如果指定了JET_bitWaitLastLevel0Commit或JET_bitWaitAllLevel0Commit,则忽略此选项。 如果此对 JetCommitTransaction2 的调用与此会话对 JetBeginTransaction 函数的第一次调用不匹配,则忽略此选项。 这是因为在最外层保存点上发生的最后操作是决定整个事务是否实际提交到磁盘的因素。 |
JET_bitWaitAllLevel0Commit |
之前由任何会话提交但尚未刷新到事务日志文件的所有事务都将立即刷新。 此 API 将等到刷新事务后再返回到调用方。 即使会话当前不在事务中,也可以使用此选项。 此选项不能与任何其他选项结合使用。 此选项在从 Windows Server 2003 开始的 Windows Server 操作系统版本中可用。 |
JET_bitWaitLastLevel0Commit |
如果会话以前已提交任何事务,但尚未将其刷新到事务日志文件,则应立即刷新这些事务。 此 API 将等到刷新事务后再返回到调用方。 如果应用程序以前使用 JET_bitCommitLazyFlush 提交了多个事务,现在想要将其全部刷新到磁盘,这非常有用。 即使会话当前不在事务中,也可以使用此选项。 此选项不能与任何其他选项结合使用。 |
cmsecDurableCommit
提交延迟事务的持续时间。
pCommitID
与此提交记录关联的提交 ID。
返回值
此函数使用下表中列出的返回代码之一返回 JET_ERR 数据类型。 有关可能的可扩展存储引擎 (ESE) 错误的详细信息,请参阅 可扩展存储引擎错误 和 错误处理参数。
返回代码 |
说明 |
---|---|
JET_errSuccess |
操作已成功完成。 |
JET_errClientRequestToStopJetService |
无法完成操作,因为由于调用 JetStopService 函数,与会话关联的实例上的所有活动都已停止。 |
JET_errInstanceUnavailable |
无法完成该操作,因为与会话关联的实例遇到一个致命错误,该错误要求撤销对所有数据的访问以保护该数据的完整性。 此错误仅由从 Windows XP 开始的 Windows 操作系统版本返回。 |
JET_errInvalidgrbit |
请求的选项之一无效或未实现。 发生以下情况时, JetCommitTransaction2 函数将返回此错误:
|
JET_errNotInitialized |
无法完成操作,因为尚未初始化与会话关联的实例。 |
JET_errNotInTransaction |
操作失败,因为给定的会话不在事务中。 |
JET_errRestoreInProgress |
无法完成操作,因为正在与会话关联的实例上执行还原操作。 |
JET_errSessionSharingViolation |
同一会话不能同时用于多个线程。 此错误仅由从 Windows XP 开始的 Windows 操作系统版本返回。 |
JET_errTermInProgress |
无法完成操作,因为与会话关联的实例正在关闭。 |
成功后,将在给定会话的当前保存点期间对数据库所做的任何更改提交,并且该保存点将结束。 如果会话的最后一个保存点已结束,则事务将选择性地刷新到事务日志文件,并且会话将退出该事务。
失败时,会话的事务状态将保持不变。 不会更改数据库状态。 应用程序应调用 JetRollback 函数来中止事务。
备注
必须有一次对 JetCommitTransaction2 或 JetRollback 的调用,才能匹配给定会话对 JetBeginTransaction 的每次调用。
要求
要求 | 值 |
---|---|
客户端 |
需要Windows 8。 |
服务器 |
需要Windows Server 2012。 |
标头 |
在 Esent.h 中声明。 |
Library |
使用 ESENT.lib。 |
DLL |
需要ESENT.dll。 |
另请参阅
JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetRollback
JetStopService