事务

事务是定义逻辑工作单元的对象。 只要有引用事务的句柄,事务就处于活动状态,如果事务尚未提交或回滚,则它被视为活动状态。 如果已创建事务,且在提交或回滚发生之前已关闭该事务的所有句柄,则会回滚该事务。

请考虑用户模式事务客户端的情况,该客户端创建事务以限定其操作范围,然后在一个或多个资源管理器上执行更新。 发生以下情况:

  1. 客户端调用 CreateTransaction 函数来创建事务,并接收该事务的句柄作为返回值。

    事务可由任意数量的进程打开或继承;因此,事务中涉及每个进程。 这些进程中的任何一个失败都将导致事务中止。

    此事务可能尚未持久。 如果事务使用假定中止日志记录,则必须在系统故障中恢复已达到准备状态的事务。

  2. 客户端必须将事务显式传递给资源管理器。

  3. 客户端使用一个或多个 RM 执行其所有事务操作,例如事务处理文件系统。

  4. 客户端调用 CommitTransaction 函数。

  5. 资源管理器从 KTM 接收通知,以准备和提交其数据。

事务和线程

事务与线程不同。 多个线程或进程可以是单个事务的一部分。 相反,线程可以在不同时间成为多个不同事务的一部分。

事务函数

以下函数用于事务。

函数 说明
CommitTransaction 请求提交指定的事务。
CommitTransactionAsync 请求提交指定的事务。
CreateTransaction 创建新的事务对象。
GetTransactionInformation 返回所请求的有关指定事务的信息。
OpenTransaction 打开现有事务。
RollbackTransaction 请求回滚指定的事务。
RollbackTransactionAsync 请求回滚指定的事务。 此函数异步返回。
SetTransactionInformation 设置指定事务的事务信息。