事务是定义工作逻辑单元的对象。 只要有引用事务的句柄,该事务就处于活动状态,如果事务尚未提交或回滚,则被视为处于活动状态。 如果创建事务并在提交或回滚发生前已关闭该事务的所有句柄,则事务将回滚。
请考虑创建事务以限定其作范围的用户模式事务客户端的情况,然后对一个或多个资源管理器执行更新。 发生以下情况:
客户端调用 CreateTransaction 函数来创建事务,并将该事务的句柄作为返回值接收该事务。
事务可以由任意数量的进程打开或继承;因此,每个进程都涉及事务。 这些进程中的任何一个失败都会导致事务中止。
此事务可能尚不持久。 如果事务使用假定中止日志记录,则只有已达到准备状态的事务才能在系统故障中恢复。
客户端必须显式将事务传递给资源管理器。
客户端使用一个或多个 RM 执行其所有事务作,例如事务处理文件系统。
客户端调用 CommitTransaction 函数。
资源管理器从 KTM 接收通知,以准备和提交其数据。
事务和线程
事务与线程不同。 多个线程或进程可以是单个事务的一部分。 相反,线程可以是不同时间多个不同事务的一部分。
事务函数
以下函数用于事务。
| 功能 | 描述 |
|---|---|
| CommitTransaction | 请求提交指定的事务。 |
| CommitTransactionAsync | 请求提交指定的事务。 |
| CreateTransaction | 创建新的事务对象。 |
| GetTransactionInformation | 返回有关指定事务的请求信息。 |
| OpenTransaction | 打开现有事务。 |
| RollbackTransaction | 请求将回滚指定的事务。 |
| RollbackTransactionAsync | 请求将回滚指定的事务。 此函数以异步方式返回。 |
| SetTransactionInformation | 设置指定事务的事务信息。 |