ADO.NET事务和Set Xact_Abort 以及MSDTC
2005-06-14 12:49
435 查看
ADO.NET中提供的SqlTransaction对象与我们在SP(存储过程)中显示的应用“Set Xact_Abort”语句来做事务处理是两种在不同层面对事务进行处理的方法。
首先可以肯定的是,如果不在SP中显示的调用“Set Xact_Abort”语句来做事务处理,ADO.NET中提供的SqlTransaction对象能够正常的处理事务,比如遇到错误进行回滚操作等。它们两者之间是让开发人员根据自己的业务需求从不同的层面和角度来选择自己的事务处理方式。SqlTransaction对象是允许我们在数据访问层进行事务处理,而“Set Xact_Abort”语句是让我们在数据库中进行事务处理,可以说两者是提供不同的方法,但却实现了同样的功能。两者最关键的区别我认为就是“事务边界”的不同了,使用“Set Xact_Abort”是使用T-SQL中的“BEGIN TRANSACTION”和“COMMIT/ROLLBACK TRANSACTION”语句来确定事务边界的,而使用SqlTransaction对象则是通过手动指定其边界的。当然,两者的性能也是有不同的,在SP中使用“Set Xact_Abort”的效率要高于使用SqlTransaction对象,但是在事务处理的灵活性和自由度上却不如SqlTransaction对象。
当然,具体选用那种事务处理方法要视我们具体的需求而定。
关于MSDTC与这两种事务操作的关系。MSDTC是我们自己根据业务需求编写的一个COM+的服务,最主要的用途是来进行不同数据源访问的事务处理工作。这点是上述两种事务处理方法所无法做到的。也就是说,如果我们的事务来自于两种或以上不同的数据源,那么我们应该使用MSDTC来进行事务处理。并且,使用MSDTC进行事务处理,我们可以很方便的重用该COM+服务,这也是上述两种方法所不能胜任的。
首先可以肯定的是,如果不在SP中显示的调用“Set Xact_Abort”语句来做事务处理,ADO.NET中提供的SqlTransaction对象能够正常的处理事务,比如遇到错误进行回滚操作等。它们两者之间是让开发人员根据自己的业务需求从不同的层面和角度来选择自己的事务处理方式。SqlTransaction对象是允许我们在数据访问层进行事务处理,而“Set Xact_Abort”语句是让我们在数据库中进行事务处理,可以说两者是提供不同的方法,但却实现了同样的功能。两者最关键的区别我认为就是“事务边界”的不同了,使用“Set Xact_Abort”是使用T-SQL中的“BEGIN TRANSACTION”和“COMMIT/ROLLBACK TRANSACTION”语句来确定事务边界的,而使用SqlTransaction对象则是通过手动指定其边界的。当然,两者的性能也是有不同的,在SP中使用“Set Xact_Abort”的效率要高于使用SqlTransaction对象,但是在事务处理的灵活性和自由度上却不如SqlTransaction对象。
当然,具体选用那种事务处理方法要视我们具体的需求而定。
关于MSDTC与这两种事务操作的关系。MSDTC是我们自己根据业务需求编写的一个COM+的服务,最主要的用途是来进行不同数据源访问的事务处理工作。这点是上述两种事务处理方法所无法做到的。也就是说,如果我们的事务来自于两种或以上不同的数据源,那么我们应该使用MSDTC来进行事务处理。并且,使用MSDTC进行事务处理,我们可以很方便的重用该COM+服务,这也是上述两种方法所不能胜任的。
相关文章推荐
- SET XACT_ABORT ON [SQL SERVER] 设置事务全部回滚
- SET XACT_ABORT { ON | OFF } 设置整个事务终止并回滚方法
- SET XACT_ABORT { ON | OFF }SQL Server 是否自动回滚到当前事务
- 存储过程中的 SET XACT_ABORT ON 和事务
- SET XACT_ABORT用法(事务)
- ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据
- ADO.NET 2.0中新的事务处理机制的引入带来前所未有的新体验(给所有不了解TransactionScope的朋友,以及还在用SqlTransaction的朋友)
- ADO.NET使用事务出错的解决(MSDTC)
- SQL 删除重复记录,同时统计重复记录某一列的数据 以及 SET XACT_ABORT
- ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据
- SQL事务设置SET XACT_ABORT后正确回滚
- SET XACT_ABORT { ON | OFF }SQL Server 是否自动回滚到当前事务
- SET XACT_ABORT ON 数据库事务
- SQL_SET XACT_ABORT ON(事务回滚)
- set XACT_ABORT ON与判断事务的异同
- ADO.NET使用事务出错的解决(MSDTC) <转>
- 事务的回滚设置(SET XACT_ABORT)
- set xact_abort ON 你懂的, 在分布式数据库事务中,用到. 在事务中,若出现错误,系统即默认回滚事务
- 事务中SET XACT_ABORT各种用法
- SET XACT_ABORT