步步为营 c 技术漫谈 七事务处理(transaction).docxVIP

步步为营 c 技术漫谈 七事务处理(transaction).docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
步步为营 c 技术漫谈 七事务处理(transaction)

步步为营 C# 技术漫谈七、事务处理(Transaction)概述事务必须具有原子性、一致性、隔离性和持久性。虽然首字母缩写词容易记忆,但是每个词的含义不是很明显。以下是简要说明。? ●??? 原子性(Atomicity):原子性可确保要么执行所有更新,要么什么也不发生。由于事务中的原子性保障,开发人员不必编写代码来处理更新成功而另一个没有成功的情况。? ●??? 一致性(Consistency):一致性意味着事务的结果使得系统保持一致状态。在事务启动之前,数据保持有效的状态,这与事务结束时一样。一致性还确保了事务必须使得数据库保持一致状态,如果事务的部分操作失败,则其他部分也必须回到原来的状态。? ●??? 隔离性(Isolation):多个用户可能同时访问同一个数据库。使用隔离性能够保证在事务完成之前,该事务外部不能看到事务中的数据改变。也不能访问一些中间状态,如果事务终止这些状态将不会发生。? ●??? 持久性(Durability):持久性意味着即使是系统崩溃也能够保证一致性状态。如果数据库系统崩溃,则持久性必须保证已经提交的事务确实写入了数据库。?事务类型事务分为本地事务和分布式事务两种类型。? ●??? 本地事务:该类型事务使用已知数据源(例如SQL Server),同时还是单阶段事务。若单个数据库中保存了所有有关事务的数据,对自身可以强制使用ACID规则。这意味着在单个数据库服务器中(例如SQL Server),只要使用同一个连接,则可以跨数据库使用本地事务。? ●??? 分布式事务:该类型事务使用多个已知事务数据源。分布式行为可能需要从消息队列服务器中读取消息,从SQL Server数据库中获取数据,以及将消息写入其他数据库。一些软件包(例如MSDTC)能够以编程方式辅助实现分布式事务,通过使用一些方法(例如两阶段提交和回滚)能够控制跨越所有数据源的提交和回滚行为,以便保证集成性。MSDTC仅可用于兼容事务管理接口的应用程序。当前可用的应用程序有MSMQ、SQL Server、Oracle、Sybase和其他当前可用的应用程序(称为资源管理器)。两阶段提交在分布式事务环境中,不同的资源管理器需要实现可靠的提交协议,最为常见的实现是两阶段提交。在两阶段提交中,实际的提交工作分为两个阶段:? ●??? 第一个阶段包括为提交准备一些所需的更改。这样,RM(资源管理器)就会与事务协调器通信,告知其更新准备已经就绪,准备执行提交,但实际还不进行提交。? ●??? 一旦所有资源管理器都告知事务协调器准备工作就绪,那么事务协调器将使所有参与者都了解继续工作准备好,接着执行更改。在两阶段提交中,单个或者多个数据库能够参与分布式事务。实际上,任何在MSDTC事务中登记的对象都能够参与由MSDTC管理的分布式事务。例如,MSMQ能够参与由两个SqlConnection对象连接两个不同数据库的事务。简单描述两阶段提交显然过于简单化,而深入讲解两阶段提交又超出了本书范围。既然读者对事务有了初步认识,就能够理解.NET 1.x提供的针对事务过程的支持。?四种事务处理一、SQL事务sql事务是使用SQL server自身的事务:在存储过程中直接使用Begin Tran,Rollback Tran,Commit Tran实现事务:优点:执行效率最佳限制:事务上下文仅在数据库中调用,难以实现复杂的业务逻辑。示例:( SQL Server自带的AdventureWorks数据为例)带事务的储存过程:?123456789101112131415161718CREATE PROCEDURE dbo.spModifyAddress( @City nvarchar(30), @AddressIDint, @PostalCodenvarchar(15), @Name nvarchar(50), ) AS begin Tran Update Address? Set City=@City,PostalCode=@PostalCode where AddressID=@AddressIDupdate AddressType setName = @Name where AddressTypeID = @AddressIDdeclare @UpdateErrorintselect @UpdateError=@@error if(@UpdateError=0) COMMIT Tran elseROLLBACK Tran GO??调用:?1234567891011121314151617181920212223publicvoidSQLTran() { ????SqlConnectionconn = newSqlConnection(Data Source=;Ini

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档