显式事务

显式事务就是可以显式地在其中定义事务的开始和结束的事务。

DB-Library 应用程序和 Transact-SQL 脚本使用 BEGIN TRANSACTION、COMMIT TRANSACTION、COMMIT WORK、ROLLBACK TRANSACTION 或 ROLLBACK WORK Transact-SQL 语句定义显式事务。

  • BEGIN TRANSACTION
    标记显式连接事务的起始点。

  • COMMIT TRANSACTION 或 COMMIT WORK
    如果没有遇到错误,可使用该语句成功地结束事务。该事务中的所有数据修改在数据库中都将永久有效。事务占用的资源将被释放。

  • ROLLBACK TRANSACTION 或 ROLLBACK WORK
    用来清除遇到错误的事务。该事务修改的所有数据都返回到事务开始时的状态。事务占用的资源将被释放。

还可以在 OLE DB 中使用显式事务。调用 ITransactionLocal::StartTransaction 方法可启动事务。如果将 fRetaining 设置为 FALSE,通过调用 ITransaction::CommitITransaction::Abort 方法结束事务时不会自动启动另一事务。

在 ADO 中,对 Connection 对象使用 BeginTrans 方法可启动隐式事务。若要结束该事务,可调用该 Connection 对象的 CommitTransRollbackTrans 方法。

在 ADO.NET SqlClient 托管提供程序中,对 SqlConnection 对象使用 BeginTransaction 方法可以启动一个显式事务。若要结束事务,可以对 SqlTransaction 对象调用 Commit()Rollback() 方法。

ODBC API 不支持显式事务,只支持自动提交和隐式事务。

显式事务模式持续的时间只限于该事务的持续期。当事务结束时,连接将返回到启动显式事务前所处的事务模式,或者是隐式模式,或者是自动提交模式。

注意注意

在多个活动的结果集 (MARS) 会话中,通过 Transact-SQL BEGIN TRANSACTION 语句启动的显式事务将变成批范围的事务。如果批范围的事务在批处理完成时还没有提交或回滚,SQL Server 将自动回滚该事务。有关详细信息,请参阅控制事务(数据库引擎)事务语句 (Transact-SQL)