C#中跨库事务控制(二)
.NET Framework 2.0 版引入了一个可通过 System.Transactions 命名空间访问的事务框架。此框架公开事务的方式是完全集成在 .NET Framework,包括 ADO.NET。
除了对编程能力的增强之外,System.Transactions 与 ADO.NET 可一起使用,在处理事务时协调优化。可提升事务是可以根据需要自动提升为完全分布式事务的轻型(本地)事务。
从 ADO.NET 2.0 开始,当您使用 SQL Server 2005 时 System.Data.SqlClient 会提供对可提升事务的支持。可提升的事务不会调用分布式事务增加的系统开销,除非需要增加的系统开销。可提升事务是自动的,不需要开发人员参与。
只有一起使用 SQL Server 的 .NET Framework 数据提供程序 (SqlClient) 和 SQL Server 2005 时,才可以使用可提升事务。
创建可提升事务
SQL Server 的 .NET Framework 提供程序支持可提升事务,这种事务通过 .NET Framework System.Transactions 命名空间中的类处理。可提升事务通过将分布式事务推迟到需要时再创建,对分布式事务进行优化。如果只需要一个资源管理器,则不会发生任何分布式事务。
说明: |
---|
在部分信任方案中,将事务提升为分布式事务时,需要 DistributedTransactionPermission。有关更多信息,请参见事务管理升级。 |
可提升事务方案
分布式事务由 Microsoft 分布式事务处理协调器 (MS DTC) 管理,该协调程序集成了事务中访问的所有资源管理器,通常会占用大量的系统资源。可提升事务是 System.Transactions 事务的一种特殊形式,有效地将工作委托给简单的 SQL Server 2005 事务。System.Transactions、System.Data.SqlClient 和 SQL Server 2005 协调在处理事务时涉及到的工作,根据需要将其提升为完全分布式事务。
使用可提升事务的优点是在使用活动 TransactionScope 事务打开某个连接但不打开任何其他连接时,事务作为轻型事务提交,而不引发完全分布式事务的其他系统开销。