ImageVerifierCode 换一换
格式:PPT , 页数:74 ,大小:198KB ,
文档编号:4989368      下载积分:28 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-4989368.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(晟晟文业)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(SQLServer事务和并发控制课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

SQLServer事务和并发控制课件.ppt

1、SQLServer事务和并发控制课件大型数据库系统管理、设计与实例分析大型数据库系统管理、设计与实例分析基于基于SQL Server SQLServer事务和并发控制课件第第8 8章章 SQL Server SQL Server 事务和并发控制事务和并发控制 8.1 事务 8.2 事务的分类和控制 8.3 并发控制 8.4 事务处理实例分析 8.5 分布式事务 8.6 并发控制 SQLServer事务和并发控制课件8.1 8.1 事务事务8.1.1 事务的概念 8.1.2 事务对并发控制和保障数据完整的重要性 SQLServer事务和并发控制课件8.1.1 事务的概念事务的概念 事务是一个用户

2、定义的完整的工作单元,一个事务内的所有语句被作为整体执行,要么全部执行,要么全部不执行。遇到错误时,可以回滚事务,取消事务内所做的所有改变,从而保证数据库中数据的一致性和可恢复性。SQLServer事务和并发控制课件1、事务的特性、事务的特性(ACID)原子性(Atomicity):事务是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做。一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。隔离性(Isolation):一事务的执行不能被其它事务干扰。持续性(永久性)(Durability):指事务一旦提交,则其对数据库中数据的改变就应该是永

3、久的 SQLServer事务和并发控制课件2、事务和批的区别、事务和批的区别编程时,一定要区分事务和批的差别:批是一组整体编译的SQL语句,事务是一组作为单个逻辑工作单元执行的SQL语句。批语句的组合发生在编译时刻,事务中语句的组合发生在执行时刻。当在编译时,批中某个语句存在语法错误,系统将取消整个批中所有语句执行,而在运行时刻,如果事务中某个数据修改违反约束、规则等,系统默认只回退到产生该错误的语句。如果批中产生一个运行时错误,系统默认只回退到产生该错误的语句。但当打开XACT_ABORT选项为ON时,可以系统自动回滚产生该错误的当前事务。1.一个事务中也可以拥有多个批,一个批里可以有多个S

4、QL语句组成的事务,事务内批的多少不影响事务的提交或回滚操作。SQLServer事务和并发控制课件2、事务和批的区别、事务和批的区别SET XACT_ABORT指定当 Transact-SQL 语句产生运行时错误时,Microsoft SQL Server 是否自动回滚当前事务。语法SET XACT_ABORT ON|OFF 当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚。为 OFF 时,只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。编译错误(如语法错误)不受 SET XACT_ABORT 的影

5、响。对于大多数 OLE DB 提供程序(包括 SQL Server),隐性或显式事务中的数据修改语句必须将 XACT_ABORT 设置为 ON。唯一不需要该选项的情况是提供程序支持嵌套事务时。SQLServer事务和并发控制课件2、事务和批的区别、事务和批的区别下例导致在含有其它 Transact-SQL 语句的事务中发生违反外键错误。在第一个语句集中产生错误,但其它语句均成功执行且事务成功提交。在第二个语句集中,SET XACT_ABORT 设置为 ON。这导致语句错误使批处理终止,并使事务回滚。CREATE TABLE t1(a int PRIMARY KEY)CREATE TABLE t

6、2(a int REFERENCES t1(a)GOINSERT INTO t1 VALUES(1)INSERT INTO t1 VALUES(3)INSERT INTO t1 VALUES(4)INSERT INTO t1 VALUES(6)GOSET XACT_ABORT OFFGOBEGIN TRANINSERT INTO t2 VALUES(1)INSERT INTO t2 VALUES(2)/*Foreign key error*/INSERT INTO t2 VALUES(3)COMMIT TRANGOSQLServer事务和并发控制课件2、事务和批的区别、事务和批的区别SET X

7、ACT_ABORT ONGOBEGIN TRANINSERT INTO t2 VALUES(4)INSERT INTO t2 VALUES(5)/*Foreign key error*/INSERT INTO t2 VALUES(6)COMMIT TRANGO/*Select shows only keys 1 and 3 added.Key 2 insert failed and was rolled back,but XACT_ABORT was OFF and rest of transaction succeeded.Key 5 insert error with XACT_ABORT

8、 ON caused all of the second transaction to roll back.*/SELECT*FROM t2GODROP TABLE t2DROP TABLE t1GOSQLServer事务和并发控制课件2、事务和批的区别、事务和批的区别问题:如何知道XACT_ABORT为ON还是OFF呢?XACT_ABORT的默认值是什么?SQLServer事务和并发控制课件2、事务和批的区别、事务和批的区别问题:如何知道XACT_ABORT为ON还是OFF呢?DBCC USEROPTIONS:it will show as set if its ON.If its OFF

9、then it will not showDBCC USEROPTIONS返回当前连接的活动(设置)的 SET 选项。看看VB的例子:运行DBCC(顺便看一下联机帮助文档)并查看结果SQLServer事务和并发控制课件2、事务和批的区别、事务和批的区别SET XACT_ABORT的默认值是什么?对每个连接来说,SET XACT_ABORT的默认值是OFF看看VB的例子和查询分析器SQLServer事务和并发控制课件8.1.2 事务对并发控制和保障事务对并发控制和保障数据完整的重要性数据完整的重要性 1事务与并发控制的关系 如果在用户并发访问期间没有保证多个事务正确的交叉运行,用户操作相同的数据

10、时可能会产生一些意想不到的问题。包括:(1)丢失修改或被覆盖(火车票)(2)读脏数据(银行利息)(3)不能重复读(学生成绩)(4)幻影读 SQLServer事务和并发控制课件 2事务对保障数据一致和完整性的作用 故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失。影响事务正常运行的故障有:(1)事务内部的故障 (2)系统故障 (3)介质故障(4)计算机病毒 8.1.2 事务对并发控制和保障事务对并发控制和保障数据完整的重要性数据完整的重要性 SQLServer事务和并发控制课件8.2 事务的分类和控制事务的分类和控制 8.2.1 事务的分类

11、8.2.2 事务控制 SQLServer事务和并发控制课件8.2.1 事务的分类事务的分类 SQL Server 的事务模式可分为显式事务、隐式事务和自动事务三种。1)显式事务 显式事务是指由用户执行T-sql事务语句而定义的事务,这类事务又称做用户定义事务。定义事务的语句包括:BEGIN TRANSACTION:标识一个事务的开始,即启动事务。COMMIT TRANSACTION、COMMIT WORK:标识一个事务的结束,事务内所修改的数据被永久保存到数据库中。ROLLBACK TRANSACTION、ROLLBACK WORK:标识一个事务的结束,说明事务执行过程中遇到错误,事务内所修改

12、的数据被回滚到事务执行前的状态。SQLServer事务和并发控制课件 2)隐式事务在隐式事务模式下,在当前事务提交或回滚后,SQL Server自动开始下一个事务。所以,隐式事务不需要使用BEGIN TRANSACTION语句启动事务,而只需要用户使用ROLLBACK TRANSACTION、ROLLBACK WORK、COMMIT TRANSACTION、COMMIT WORK等语句提交或回滚事务。在提交或回滚后,SQL Server自动开始下一个事务。执行SET IMPLICIT_TRANSACTIONS ON语句可使SQL Server进入隐式事务模式。在隐式事务模式下,当执行下面任意一

13、个语句时,可使SQL Server重新启动一个事务:所有CREATE语句 ALTER TABLE 所有DROP语句 TRUNCATE TABLE GRANT REVOKE INSERT UPDATE DELETE SELECT OPEN FETCH需要关闭隐式事务模式时,调用SET语句关闭IMPLICIT_TRANSACTIONS OFF连接选项即可。SQLServer事务和并发控制课件 3)自动事务模式 在自动事务模式下,当一个语句被成功执行后,它被自动提交,而当它执行过程中产生错误时,被自动回滚。自动事务模式是SQL Server的默认默认事务管理模式,当与SQL Server建立连接后,

14、直接进入自动事务模式,直到使用BEGIN TRANSACTION语句开始一个显式事务,或者打开IMPLICIT_TRANSACTIONS 连接选项进入隐式事务模式为止。而当显式事务被提交或而当显式事务被提交或IMPLICIT_TRANSACTIONS 被关闭后,被关闭后,SQL Server又进入自动事务管理模式。又进入自动事务管理模式。看看看看VB的例子的例子SQLServer事务和并发控制课件示例:BEGIN TRAN demoSELECT*FROM StudentINSERT INTO Student VALUES(9711112,张三,)SELECT*FROM StudentROLLB

15、ACK -回滚整个事务 或:COMMIT -提交事务SQLServer事务和并发控制课件8.2.2 事务控制事务控制 SQL Server中有关事务的处理语句有:命令名作用格式BEGIN TRANSACTION说明一个事务开始 BEGIN TRANsaction COMMIT TRANSACTION说明一个事务结束,它的作用是提交或确认事务已经完成 COMMIT TRANsaction SAVE TRANSACTION用于在事务中设置一个保存点,目的是在撤消事务时可以只撤消部分事务,以提高系统的效率 SAVE TRANsaction ROLLBACK TRANSACTION 说明要撤消事务,即

16、撤消在该事务中对数据库所做的更新操作,使数据库回退到BEGIN TRANSACTION或保存点之前的状态 ROLLBACK TRANsaction|SQLServer事务和并发控制课件Save transaction示例(略)1:下例更改分给 The Gourmet Microwave 的两位作者的版税。数据库将会在两个更新间不一致,因此必须将它们分组为用户定义的事务。BEGIN TRANSACTION royaltychange UPDATE titleauthor SET royaltyper=65 FROM titleauthor,titles WHERE royaltyper=75 A

17、ND titleauthor.title_id=titles.title_id AND title=The Gourmet Microwave UPDATE titleauthor SET royaltyper=35 FROM titleauthor,titles WHERE royaltyper=25 AND titleauthor.title_id=titles.title_id AND title=The Gourmet MicrowaveSAVE TRANSACTION percentchanged/*After having updated the royaltyper entrie

18、s for the two authors,the user inserts the savepoint percentchanged,and then determines how a 10-percent increase in the books price would affect the authors royalty earnings.*/SQLServer事务和并发控制课件Save transaction示例(略)2:UPDATE titles SET price=price*1.1 WHERE title=The Gourmet MicrowaveSELECT(price*ro

19、yalty*ytd_sales)*royaltyper FROM titles,titleauthor WHERE title=The Gourmet Microwave AND titles.title_id=titleauthor.title_id/*The transaction is rolled back to the savepointwith the ROLLBACK TRANSACTION statement.*/ROLLBACK TRANSACTION percentchangedCOMMIT TRANSACTION/*End of royaltychange.*/SQLSe

20、rver事务和并发控制课件 说明:在定义一个事务时,BEGIN TRANSACTION语句应与COMMIT TRANSACTION语句或ROLLBACK TRANSACTION成对出现。在SQL Server中,事务定义语句可以嵌套,但实际上只有最外层的BEGIN TRANSACTION语句和COMMIT TRANSACTION语句才能建立和提交事务;在回滚事务时,也只能使用最外层定义的事务名或存储点标记,而不能使用内层定义的事务名。事务嵌套常用在存储过程或触发器内,它们可以使用BEGIN TRANSACTION。COMMIT TRANSACTION对来相互调用。SQLServer事务和并发控

21、制课件说明:事务处理过程中的错误:如果服务器错误使事务无法成功完成,则SQL Server自动回滚该事务,并释放该事务所占有的所有资源;如果客户端与SQL Server的网络连接中断,那么当网络告知SQL Server该中断时,将回滚该连接所有未完成的事务;如果客户端应用程序失败或客户计算机崩溃或重启,也会中断该连接,当SQL Server该中断时,将回滚该连接所有未完成的事务;如果客户从该应用程序注销,所有未完成的事务也会被回滚。1.可以用联网的两台计算机测试可以用联网的两台计算机测试VB程序。程序。SQLServer事务和并发控制课件8.3.1 编写有效事务的指导原则 8.3.2 避免并发

22、问题 8.3 编写有效事务的建议编写有效事务的建议 SQLServer事务和并发控制课件8.3.1 编写有效事务的指导原则编写有效事务的指导原则 1不要在事务处理期间输入数据 2浏览数据时,尽量不要打开事务 3保持事务尽可能的短 4灵活地使用更低的事务隔离级别 5在事务中尽量使访问的数据量最小 SQLServer事务和并发控制课件8.3.2 避免并发问题避免并发问题 为了防止并发问题,应该小心地管理隐性事务。在使用隐性事务时,COMMIT或ROLLBACK之后的下一个Transact-SQL语句会自动启动一个新事务。这可能在应用程序浏览数据时,甚至在要求用户输入时,打开新的事务。所以,在完成保

23、护数据修改所需要的最后一个事务之后和再次需要一个事务来保护数据修改之前,应该关闭隐性事务。SQLServer事务和并发控制课件8.4 事务处理实例分析事务处理实例分析 【例8-1】使用事务的三种模式进行表的处理,分批执行,观察执行的过程。USE 教学管理 GO SELECT times=0,*FROM student-检查当前表中的结果 GO-SQL Server首先处于自动事务管理模式 INSERT student(sno,sssn,sname,ssex,smtel,scity,smajor,sdepa)VALUES(S060101,*19880510*,关汉青,男,西安,计算机,信息学院)

24、SELECT times=1,*FROM student-显示S060101被插入。GOSQLServer事务和并发控制课件INSERT student(sno,sssn,sname,ssex,smtel,scity,smajor,sdepa)VALUES(S060101,*19880510*,关汉青,男,西安,计算机,信息学院)-服务器:消息 2627,级别 14,状态 1,行 1-违反了 PRIMARY KEY 约束 PK_Student_75A278F5。不能在对象 Student 中插入重复键。-语句已终止。SELECT times=2,*FROM student -显示数据没有变化。

25、GOBEGIN TRANSACTION -进入显式事务模式INSERT student(sno,sssn,sname,ssex,smtel,scity,smajor,sdepa)VALUES(S060106,*19880510*,关汉青,男,西安,计算机,信息学院)SELECT times=3,*FROM student -显示S060106被插入SQLServer事务和并发控制课件ROLLBACK TRANSACTION GOSELECT times=4,*FROM student -因为执行了回滚,插入的因为执行了回滚,插入的S060106被撤消。被撤消。GOSET IMPLICIT_TR

26、ANSACTIONS ON -进入隐式事务模式进入隐式事务模式INSERT student(sno,sssn,sname,ssex,smtel,scity,smajor,sdepa)VALUES(S060107,*19880510*,关汉青关汉青,男男,西西安安,计算机计算机,信息学院信息学院)SELECT times=5,*FROM student -显示显示S060107被插入被插入ROLLBACK GOSELECT times=6,*FROM student -因为执行了回滚,插入的因为执行了回滚,插入的S060107被撤消。被撤消。GOSQLServer事务和并发控制课件DELETE

27、FROM student WHERE sno=S060101 -删除第删除第1个插入个插入SELECT times=7,*FROM student -显示显示S060101不存在不存在ROLLBACKGO SELECT times=8,*FROM student -因为回滚,使删除作废,所因为回滚,使删除作废,所以以S060101又重新显示存在。又重新显示存在。GOSET IMPLICIT_TRANSACTIONS OFF -隐式事务模式结束,又隐式事务模式结束,又进入自动模式进入自动模式 DELETE FROM student WHERE sno=S060101-删除第删除第1个插入个插入S

28、ELECT times=9,*FROM student -自动模式执行成功自动模式执行成功被自动提交,显示被自动提交,显示S060101被删除不存在。被删除不存在。SQLServer事务和并发控制课件【例【例8-2】定义事务,使事务回滚到指定的保存点,分批执行,观察执行】定义事务,使事务回滚到指定的保存点,分批执行,观察执行的过程。的过程。USE 教学管理 GO SELECT times=0,*FROM student -检查当前表中的结果 GO BEGIN TRANSACTION demo INSERT student(sno,sssn,sname,ssex,smtel,scity,smaj

29、or,sdepa)VALUES(S060106,*19880510*,关汉青,男,西安,计算机,信息学院)SAVE TRANSACTION save_demo SQLServer事务和并发控制课件INSERT student(sno,sssn,sname,ssex,smtel,scity,smajor,sdepa)VALUES(S060107,*19890818*,杨理华杨理华,女女,运运城城,计算机计算机,信息学院信息学院)SELECT times=1,*FROM student -显示显示S060106和和S060107都被插入。都被插入。GOROLLBACK TRANSACTION sa

30、ve_demo -回滚部分事务回滚部分事务SELECT times=2,*FROM student -显示显示S060107被撤被撤消不存在。消不存在。GOROLLBACK TRANSACTION -回滚整个事务回滚整个事务SELECT times=3,*FROM student -显示显示S060106被撤消不存在。被撤消不存在。SQLServer事务和并发控制课件【例【例8-3】创建数据表】创建数据表stu_test3,生成三个级别的嵌套时务,并提交该,生成三个级别的嵌套时务,并提交该嵌套事务。观察变量嵌套事务。观察变量TRANCOUNT的值的变化。的值的变化。USE 教学管理 -选择数据

31、库必须单独在一个批中GOSELECT TRANCOUNT -变量TRANCOUNT的值为0BEGIN TRANSACTION inside1 SELECT TRANCOUNT -变量TRANCOUNT的值为1INSERT student(sno,sssn,sname,ssex,smtel,scity,smajor,sdepa)VALUES(S060106,*19880510*,关汉青,男,西安,计算机,信息学院)GOBEGIN TRANSACTION inside2 SELECT TRANCOUNT -变量TRANCOUNT的值为2 SQLServer事务和并发控制课件INSERT stude

32、nt(sno,sssn,sname,ssex,smtel,scity,smajor,sdepa)VALUES(S060107,*19890818*,杨理华杨理华,女女,运运城城,计算机计算机,信息学院信息学院)GOBEGIN TRANSACTION inside3 SELECT TRANCOUNT -变量变量TRANCOUNT的值为的值为3INSERT student(sno,sssn,sname,ssex,smtel,scity,smajor,sdepa)VALUES(S060108,*19870818*,陈向陈向前前,男男,北京北京,计算机计算机,信息学院信息学院)GOCOMMIT TRA

33、NSACTION inside3 SELECT TRANCOUNT -变量变量TRANCOUNT的值减为的值减为2GOSQLServer事务和并发控制课件COMMIT TRANSACTION inside2 SELECT TRANCOUNT-变量变量TRANCOUNT的值减为的值减为1GOCOMMIT TRANSACTION inside1 SELECT TRANCOUNT-变量变量TRANCOUNT的值减为的值减为0 GO SQLServer事务和并发控制课件【例【例8-4】在教学管理数据的】在教学管理数据的STUDENT表中先删除一条记录,然后再表中先删除一条记录,然后再插入一条记录,通过

34、测试错误值确定提交还是回滚。插入一条记录,通过测试错误值确定提交还是回滚。USE 教学管理 GO DECLARE del_error int,ins_error int-开始一个事务 BEGIN TRAN-删除一个学生 DELETE STUDENT WHERE SNO=S060308-为删除语句设置一个接受错误数值的变量 SELECT del_error=ERROR SQLServer事务和并发控制课件-再执行插入语句再执行插入语句INSERT INTO STUDENT VALUES(S060308,*19890526*,张丹宁张丹宁,男男,130*12,宁波宁波,电子商务电子商务,信息学院信

35、息学院,162)-为插入语句设置一个接受错误数值的变量为插入语句设置一个接受错误数值的变量SELECT ins_error=ERROR-测试错误变量中的值测试错误变量中的值IF del_error=0 AND ins_error=0 BEGIN -成功,提交事务成功,提交事务 COMMIT TRAN ENDSQLServer事务和并发控制课件ELSE BEGIN -有错误发生,回滚事务有错误发生,回滚事务 IF del_error 0 PRINT 错误发生在删除语句错误发生在删除语句 IF ins_error 0 PRINT 错误发生在插入语句错误发生在插入语句 ROLLBACK TRAN E

36、ND GO 可以将插入的可以将插入的S060308改为改为SS060308再执行再执行一次该程序,观察结果有什么不同?一次该程序,观察结果有什么不同?SQLServer事务和并发控制课件8.5 分布式事务分布式事务 8.5.1 分布式事务的两阶段提交 8.5.2 分布式事务的处理过程 8.5.3 分布式事务实例分析 SQLServer事务和并发控制课件8.5 分布式事务 在大型应用领域,经常需要时务跨服务器进行数据操作,这样的事务被称作分布式事务。所以分布式事务要能够在多个服务器上执行。按照关于分布式事务处理的X/Open XA规范,分布式事务的处理过程规定为两个阶段,就是通常说的两阶段提交。

37、为了简化应用程序对分布式事务的处理工作,系统提供了一个事务管理器来协调各个不同服务器对事务的处理操作,它就是MS DTC(Distributed Transaction Coordinator),既事务管理协调器。我们在第一章简单介绍过。SQLServer事务和并发控制课件8.5.1 分布式事务的两阶段提交分布式事务的两阶段提交(1)准备阶段:当分布式事务管理器接受到提交请求后,它向所有参与与该事务的SQL Server 服务器发出准备命令。每个服务器接受到准备命令后,做好接受处理事务的准备工作,并将准备工作状态返回给事务管理器。(2)提交阶段:当事务管理器接受到所有服务器成功准备好的信息后,

38、它向这些服务器发出提交命令。之后所有服务器进行提交。如果所有服务器均能成功提交事务,管理器向应用程序报告分布式事务成功提交,如若有任一个服务器未能提交,事务管理器将向所有服务器发出回滚事务命令,并向应用程序报告事务提交失败。SQLServer事务和并发控制课件8.5.2 分布式事务的处理过程分布式事务的处理过程(1)T-SQL程序或应用程序执行BEGIN DISTRIBUTED TRANSACTION语句启动一个分布式事务。此后,该服务器就成为分布式服务器的管理服务器。(2)应用程序对链接服务器执行分布式查询或执行远程服务器上的存储过程。(3)分布式事务管理服务器自动调用MS DTC,使链接服

39、务器或远程服务器参加分布式事务处理。(4)T-SQL应用程序执行COMMIT或ROLLBACK语句时,分布式事务管理服务器通过调用MS DTC来管理两阶段提交,使链接或远程服务器提交或回滚事务。SQLServer事务和并发控制课件8.5.3 分布式事务实例分析分布式事务实例分析 1分布式事务语法格式 语法格式:BEGIN DISTRIBUTED TRANSANCTION t r a n s a n c t i n _ n a m e|transanctin_variable 参数说明:transanctin_name|transanctin_variable事务名称或事务名变量。SQLServ

40、er事务和并发控制课件2、分布式事务实例【例8-6】有两个服务器LinkServer1和LinkServer2。在LinkServer2服务器上建立存储过程student_insert_new,其功能是向LinkServer1上的教学管理数据库的student表插入一个新行。-先创建链接(远程)服务器(参见第2章)-在第一台运行SQL Server的服务器上运行下列代码:EXEC sp_addlinkedserver LinkServer1,SQLOLEDB,本地服务器名或ip地址 -例如zufe-mxh EXEC sp_addlinkedserver LinkServer2,SQLOLEDB

41、,远程服务器名或ip地址 -例如172.19.2.156 EXEC sp_configure remote access,1 -系统默认是1,一般不需要设置SQLServer事务和并发控制课件RECONFIGURE-设置设置LinkServer1的的rpc输出属性,使得允许调用链接服务器上的存输出属性,使得允许调用链接服务器上的存储过程。储过程。EXEC sp_serveroption LinkServer1,rpc out,trueGO -停止并重新启动第一台停止并重新启动第一台 SQL Server。-确保使用确保使用 SQL Server 身份验证登录。在第二台身份验证登录。在第二台 S

42、QL Server 上运上运行下列代码。行下列代码。EXEC sp_addlinkedserver LinkServer2,SQLOLEDB,本本地服务器名或地服务器名或ip地址地址 -例如例如172.19.2.156 EXEC sp_addlinkedserver LinkServer1,SQLOLEDB,远程服务器名或远程服务器名或ip地址地址 -例如例如zufe-mxh SQLServer事务和并发控制课件EXEC sp_configure remote access,1 -系统默认是系统默认是1,一,一般不需要设置般不需要设置RECONFIGURE-设置设置LinkServer2的的r

43、pc输出属性,使得允许调用链接服务器上的存输出属性,使得允许调用链接服务器上的存储过程。储过程。EXEC sp_serveroption LinkServer2,rpc out,trueGO-在第二个服务器上添加新的远程登录在第二个服务器上添加新的远程登录ID(LinkServer1),以便允许远),以便允许远程服务器程服务器LinkServer1连接并执行远程过程调用。连接并执行远程过程调用。-假设登录假设登录LinkServer2和和LinkServer1的用户都是的用户都是sa,并且有相同,并且有相同的口令。的口令。EXEC sp_addremotelogin LinkServer1,s

44、a,saGO-停止并重新启动第二台停止并重新启动第二台 SQL Server。SQLServer事务和并发控制课件-在在LinkServer2上创建存储过程(见第上创建存储过程(见第12章)。章)。-假设该服务器上面有数据库假设该服务器上面有数据库教学练习教学练习。Use 教学练习教学练习GOCREATE procedure student_insert_new ASINSERT LinkServer1.教学管教学管理理.dbo.student(sno,sssn,sname,ssex,smtel,scity,smajor,sdepa)VALUES(S060112,*19870818*,许少文许

45、少文,男男,湖州湖州,计算机计算机,信息学院信息学院)GO-在第一台服务器上启动在第一台服务器上启动DTC开始分布式事务开始分布式事务-使用使用 sa 登录,现在就可以在第一台登录,现在就可以在第一台 SQL Server 上执行第二台上执行第二台 SQL Server 上的存储过程。上的存储过程。SQLServer事务和并发控制课件USE 教学管理教学管理GOBEGIN DISTRIBUTED TRANSACTION insert_tran -开始分布式事务开始分布式事务-在在LinkServer1服务器上实行对表服务器上实行对表student的插入的插入INSERT student(sno

46、,sssn,sname,ssex,smtel,scity,smajor,sdepa)VALUES(S060111,*19870818*,陈东生陈东生,男男,上上海海,计算机计算机,信息学院信息学院)GO-LinkServer1服务器自动调用服务器自动调用MS DTC使得使得LinkServer2服务器执行存服务器执行存储过程储过程student_insert_new对表对表student的插入。的插入。EXECUTE LinkServer2.教学练习教学练习.dbo.student_insert_newCOMMIT TRANSACTION -提交事务提交事务 SQLServer事务和并发控制课

47、件8.6 并发控制并发控制 8.6.1 SQL Server锁的粒度及模式 8.6.2 封锁协议 8.6.3 事务隔离 8.6.4 死锁处理 SQLServer事务和并发控制课件8.6 并发控制并发控制在大型分布式数据库应用程序中,对数据库的并发访问操作是一个普遍存在的问题。SQL Server使用资源锁定的方法管理用户的并发操作。SQL Server 2000提供了两种并发控制方法:乐观并发控制:该方法假想用户之间不太可能发生资源冲突(事实上不是不可能),所以允许用户在不锁定任何资源的情况下执行事务。只有当用户试图修改数据时才检查资源是否冲突。该方法需要使用游标,游标中介绍。悲观并发控制:该

48、方法根据需要在事务的持续时间内锁定资源,从而确保事务的完整性和数据库的一致性。这是SQL Server 2000默认的并发控制方法。下面予以介绍。SQLServer事务和并发控制课件8.6.1 SQL Server锁的粒度及模式 1、SQL Server 锁的粒度1)RID:行标识符,锁定表中单行数据。2)键值:具有索引的行数据。3)页面:一个数据页面或索引页面。4)区域:一组连续的8个数据页面或索引页面。5)表:整个表,包括其所有的数据和索引。6)数据库:一个完整的数据库。可以根据事务所执行的任务来灵活选择所锁定的资源粒度。SQLServer事务和并发控制课件2、资源锁定模式、资源锁定模式基

49、本锁基本锁1)共享锁:用于只读数据操作,它允许多个并发事务对资源锁定进行读取,但禁止其他事务对锁定资源的修改操作。2)排它锁:它锁定的资源不能被其它并发事务再进行任何锁定,所以其它事务不能读取和修改。锁定的资源用于自己的数据修改。一般更新模式是由一个事务组成,该事务先读取记录,要获取资源的共享锁,然后修改记录,此操作要求锁转换为排它锁。如果两个事务都获得了资源上的共享锁,然后试图同时更新数据,这样肯定有一个事务要将共享锁转化为排它锁,因为一个事务的排它锁与其它事务的共享锁不兼容,发生锁等待。另一个事务也会出现这个问题,由于两个事务都要转化为排它锁,并且都等待另一个事务释放共享锁,因此发生死锁。

50、SQLServer事务和并发控制课件2、资源锁定模式、资源锁定模式专用锁专用锁 3)更新锁:在修改操作的初始化阶段用于锁定可能被修改的资源。一个数据修改事务在开始时直接申请更新锁,每次只有一个事务可以获得资源的更新锁。使用更新锁可以避免上述死锁,因为一次只有一个事务可以获得更新锁,之后当需要继续修改数据时,将更新锁转换为排它锁,否则将更新锁转换为共享锁。SQLServer事务和并发控制课件4)意向锁)意向锁意向锁表示如果获得一个对象的锁,说明该结点的下层对象正在被加锁。例如放置在表上的共享意向锁表示事务打算在表中的页或行上加共享锁。意向锁可以提高性能,因为系统仅在表级上检查意向锁而无须检查下层

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|