在 OLE DB 中支持事务

事务是一种对数据源的一系列更新进行分组或批处理的方法,这样要么全部成功并立即提交,要么(如果其中任意一个失败)全部都不提交并回滚整个事务。 此过程可确保数据源上结果的完整性。

OLE DB 通过以下三种方法支持事务:

会话和事务的关系

单个数据源对象可以创建一个或多个会话对象,每个会话对象在指定时间都可以位于事务范围之内或之外。

如果会话未进入事务,则调用每个方法时都会立即提交在该会话内对数据存储完成的所有工作。 (这有时称为自动提交模式或隐式模式。)

如果会话进入事务,则该会话内对数据存储完成的所有工作都属于该事务,并作为一个单元提交或中止。 (这有时称为手动提交模式。)

事务支持是特定于提供程序的。 如果使用的提供程序支持事务,则支持 ITransactionITransactionLocal 的会话对象可以输入(非嵌套)事务。 OLE DB 模板类 CSession 支持这些接口,并且是在 Visual C++ 中实现事务支持的推荐方法。

启动和结束事务

你在使用者的行集对象中调用 StartTransactionCommitAbort 方法。

调用 ITransactionLocal::StartTransaction 启动新的本地事务。 启动并提交事务时,后续操作要求的所有更改才会应用于数据存储。

调用 ITransaction::CommitITransaction::Abort 结束事务。 Commit 会将事务范围内的所有更改应用于数据存储。 Abort 会取消事务范围内的所有更改,并且数据存储保持事务启动之前的状态。

嵌套事务

在会话中已存在活动事务的情况下启动新的本地事务时,会出现嵌套事务。 新事务作为当前事务下的嵌套事务启动。 如果提供程序不支持嵌套事务,则在会话上已存在活动事务时调用 StartTransaction 会返回 XACT_E_XTIONEXISTS。

分布式事务

分布式事务是指更新分布式数据的事务,即多个连网计算机系统上的数据。 如果想支持分布式系统上的事务,应使用 .NET Framework 而不是 OLE DB 事务支持。

另请参阅

使用访问器