JetBeginTransaction3 函数
适用于: Windows | Windows Server
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。 |
服务器 |
要求使用 Windows Server 2012。 |
页眉 |
在 Esent.h 中声明。 |
Library |
使用 ESENT.lib。 |
DLL |
需要 ESENT.dll。 |
另请参阅
JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetGetSystemParameter
JetResetSessionContext
JetRollback
JetSetSessionContext
System Parameters