JetRollback 函数
适用于:Windows |Windows服务器
JetRollback 函数
JetRollback 函数撤消对数据库状态所做的更改,并返回到最后一个保存点。 JetRollback 还会关闭保存点期间打开的任何游标。 如果撤消最外部的保存点,会话将退出事务。
JET_ERR JET_API JetRollback(
__in JET_SESID sesid,
__in JET_GRBIT grbit
);
参数
sesid
要用于此调用的会话。
grbit
包含用于此调用的选项的一组位,其中包括以下零个或多个:
值 |
含义 |
---|---|
JET_bitRollbackAll |
此选项请求撤消所有保存点期间对数据库状态所做的所有更改。 因此,会话将退出事务。 |
返回值
此函数使用以下返回代码之一返回 JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅可扩展存储引擎错误和错误处理参数。
返回代码 |
描述 |
---|---|
JET_errSuccess |
操作已成功完成。 |
JET_errClientRequestToStopJetService |
无法完成该操作,因为由于调用 JetStopService 而停止了与会话关联的实例上的所有活动。 |
JET_errInstanceUnavailable |
无法完成该操作,因为与会话关联的实例遇到了一个致命错误,该错误要求撤销对所有数据的访问以保护该数据的完整性。 此错误仅由 Windows XP 和更高版本返回。 |
JET_errNotInitialized |
无法完成该操作,因为尚未初始化与会话关联的实例。 |
JET_errNotInTransaction |
操作失败,因为给定会话不在事务中。 |
JET_errRestoreInProgress |
无法完成该操作,因为还原操作正在与会话关联的实例上进行。 |
JET_errRollbackError |
由于错误,无法回滚更改。 |
JET_errSessionSharingViolation |
同一会话不能同时用于多个线程。 此错误仅由 Windows XP 和更高版本返回。 |
JET_errTermInProgress |
无法完成该操作,因为与会话关联的实例正在关闭。 |
成功后,将在给定会话的当前保存点期间对数据库所做的任何更改撤消,并将结束保存点。 如果会话的最后一个保存点已结束,则会话将退出事务。
失败时,会话的事务状态将保持不变。 不会更改数据库状态。 回滚期间失败被视为灾难性的数据库错误。
注解
必须对 JetCommitTransaction 或 JetRollback 进行一次调用,才能匹配给定会话对 JetBeginTransaction 的每个调用。
如果使用 JetOpenTable 打开任何游标 (,例如,在回滚的保存点期间) ,则该游标将被关闭。
要求
要求 | 值 |
---|---|
客户端 |
需要Windows Vista、Windows XP 或 Windows 2000 Professional。 |
Server |
需要Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 |
标头 |
在 Esent.h 中声明。 |
Library |
使用 ESENT.lib。 |
DLL |
需要ESENT.dll。 |
另请参阅
JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction