C#中跨库事务控制(二)

本文介绍了C#中如何实现跨库事务控制,重点在于使用`TransactionScope`类进行可提升事务的处理。可提升事务在单个资源管理器时避免分布式事务的开销,只有在需要时才提升为分布式事务。文章提供了连接字符串关键字`Enlist`的解释,以及使用`TransactionScope`创建事务化的代码块,并展示了如何在多个SQL Server实例间进行事务操作的例子。
摘要由CSDN通过智能技术生成

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 事务打开某个连接但不打开任何其他连接时,事务作为轻型事务提交,而不引发完全分布式事务的其他系统开销。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值