JetBeginTransaction3 函数

适用于:Windows |Windows服务器

JetBeginTransaction3 函数会导致会话输入事务并创建新的保存点。 可以在单个会话中多次调用此函数,以创建其他保存点。 这些保存点可用于选择性地保留或放弃对数据库的更改。

JetBeginTransaction3 函数是在Windows 8操作系统中引入的。

JET_ERR JET_API JetBeginTransaction3(
  __in          JET_SESID sesid,
  __in          int64 trxid,
  __in          JET_GRBIT grbit
);

参数

sesid

要用于此调用的会话。

trxid

用户提供的可选标识符,用于标识事务。

grbit

一组位,指定下表中列出的零个或多个调用选项值。

含义

JET_bitTransactionReadOnly

事务不会修改数据库。 如果尝试更新,该操作将失败并JET_errTransReadOnly响应代码。 除非给定会话尚未在事务中请求此选项,否则将忽略此选项。 此选项在从 Windows XP 开始的Windows操作系统版本中可用。

返回值

此函数使用下表中列出的返回代码之一返回 JET_ERR 数据类型。 有关可能的可扩展存储引擎 (ESE) 错误的详细信息,请参阅可扩展存储引擎错误错误处理参数

返回代码

说明

JET_errSuccess

操作已成功完成。

JET_errClientRequestToStopJetService

无法完成该操作,因为由于调用 JetStopService 函数而停止了与会话关联的实例上的所有活动。

JET_errInstanceUnavailable

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

此返回代码由从 Windows XP 开始的Windows版本返回。

JET_errNotInitialized

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

JET_errRestoreInProgress

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

JET_errSessionSharingViolation

同一会话不能同时用于多个线程。 此错误由从 Windows XP 开始的 Windows 版本返回。

JET_errTermInProgress

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

JET_errTransTooDeep

无法启动新事务,因为会话已处于数据库引擎允许的最大保存点深度。

成功后,提供的会话将位于事务中。 如果会话以前在事务中,将创建一个新的保存点。

失败时,会话的事务状态将保持不变。 不会更改数据库状态。

注解

有关事务工作原理的详细信息,请参阅 JetBeginTransaction

要求

要求

客户端

需要Windows 8。

Server

需要Windows Server 2012。

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。

另请参阅

JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetGetSystemParameter
JetResetSessionContext
JetRollback
JetSetSessionContext
系统参数