当前位置: 首页 > 图文教程 > 网络编程 > ASP > .NET的事务控制.

ASP
asp生成三维饼图的函数
ASP下的简洁的多重查询的方法与函数 真不错
发一个ASP的ADODB类代码
A利用ASP小偷和Google实现在线翻译功能的代码
ASP类型网站结合动网论坛会员的方法
Asp下实现多表单域无组件文件上传的实例
asp制作中常用到的函数库集合
易心asp分页类 v1.0
asp中xmlhttp组件发包
检测是否为数字类型的asp代码
可以获得文件的文件名的asp函数
用asp实现访问远程计算机上MDB access数据库文件的方法
用ASP实现写IIS日志的代码
asp在IE浏览器中下载服务端上的各类文件的实现方法
asp汉字中文图片验证码的实现代码
asp WAP获取手机终端信息的一段代码
asp取得数组中的最大值的方法
用asp实现的截取指定格式字符串的代码
asp jmail发邮件 详细解析
ASP编程中连接数据库和数据库操作的常用代码

ASP 中的 .NET的事务控制.


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 115 ::
收藏到网摘: n/a

       在分布式应用程序中,不可避免地会经常使用到事务控制。事务有一个开头和一个结尾,它们指定了事务的边界,事务在其边界之内可以跨越进程和计算机。事务边界内的所有资源都参与同一个事务。要维护事务边界内资源间的一致性,事务必须具备 ACID 属性,即原子性、一致性、隔离性和持续性。
  
  本地事务和分布式事务
  --------------------
  本地事务是其范围为单个可识别事务的数据资源的事务(例如,Microsoft SQL Server 数据库或 MSMQ 消息队列)。例如,当单个数据库系统拥有事务中涉及的所有数据时,就可以遵循 ACID 规则。在 SQL Server 的情况下,由内部事务管理器来实现事务的提交和回滚操作。
  
  分布式事务可以跨越不同种类的可识别事务的数据资源,并且可以包括多种操作(例如,从 SQL 数据库检索数据、从 Message Queue Server 读取消息以及向其他数据库进行写入)。通过利用跨若干个数据资源来协调提交和中止操作以及恢复的软件,可以简化分布式事务的编程。Microsoft Distributed Transaction Coordinator (DTC) 就是一种这样的技术。它采用一个二阶段的提交协议,该协议可确保事务结果在事务中涉及的所有数据资源之间保持一致。DTC 只支持已实现了用于事务管理的兼容接口的应用程序。这些应用程序被称为资源管理器(有关此主题的详细信息,请参见 .NET Framework Developer's Guide 中的 Distributed Transactions <http://msdn.microsoft.com/library/en-us/cpguide/html/cpconDistributedTransactions.asp> ),目前存在许多这样的应用程序,包括 MSMQ、Microsoft SQL Server、Oracle、Sybase 等等。
  
  数据库事务
  -------------
  如果调用一个在 BEGIN TRANSACTION 和 COMMIT/ROLLBACK TRANSACTION 语句中封装了所需操作的存储过程,您就可以在到数据库服务器的单个往返行程中运行事务,从而实现最佳性能。数据库事务还支持嵌套事务,这意味着您可以从一个活动事务中启动一个新事务。
  
  在下面的代码片断中,BEGIN TRANSACTION 语句开始了一个新事务。可以通过使用 COMMIT TRANSACTION 语句将更改提交到数据库来结束事务,或者,在发生任何错误的情况下,通过使用 ROLLBACK TRANSACTION 语句将所有更改撤消来结束事务:
  
  CREATE PROCEDURE Proc1
  …
  AS
   -- Begin the transaction
   BEGIN TRANSACTION
   -- Do transaction operations
   …
   -- Check for any Error
   If @@Error <> 0
   -- Rollback the Transaction
   ROLLBACK TRANSACTION
   …
   -- Commit the Transaction
   COMMIT TRANSACTION
  
  手动事务
  -------------
  利用手动事务,您可以使用开始和结束事务的显式指令来显式控制事务边界。此模式还支持允许您从活动事务中开始一个新事务的嵌套事务。但是,应用此控制会给您增加一种额外负担,您需要向事务边界登记数据资源并对这些资源进行协调。由于对分布式事务没有任何内置的支持,因此,如果您选择以手动方式来控制分布式事务,将承担许多责任;您需要控制每个连接和资源登记,并通过提供实现来保持事务的 ACID 属性。
  
  ADO.NET 手动事务
  
  这两种 Microsoft ADO.NET 数据提供程序通过提供创建到数据存储区的连接、开始一个事务、提交或中止事务以及最后关闭连接的一组对象来启用手动事务。我们将以 ADO.NET SQL 托管提供程序为例来进行说明。
  
  要在单个事务中执行操作,您需要创建 SQLTransaction 对象、使用 SQLConnection 对象开始事务、确保在事务内进行数据库交互以及提交或中止事务。SQLTransaction 对象提供了多种方法和属性来控制事务。如果事务中的每个操作都已经成功完成,可以使用 “提交” 方法将所做的更改提交到数据库。使用 SQLTransaction 对象的 “回滚” 方法可以回滚更改。
  
  注意 "命令" 对象的 Transaction 属性必须设置为一个已经开始的事务,这样,它才能在该事务中执行。
  
  Visual C# .NET
  
  SQLConnection Conn = New SQLConnection("ConnString");
  SQLCommand Cmd = New SQLCommand;
  // Open a connection
  Conn.Open();
  // Begin a transaction
  SQLTransaction Txn = Conn.BeginTransaction();
 &nbs