《数据库原理及应用-(SQLServer2008版)》唐国良蔡中民-第12章选编.ppt

《数据库原理及应用-(SQLServer2008版)》唐国良蔡中民-第12章选编.ppt

  1. 1、本文档共282页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据库原理及应用-(SQLServer2008版)》唐国良蔡中民-第12章选编

第12章 事务处理、并发控制和游标 ;12.1 事务 ;比如,我们去银行转账,操作可以分为下面两个环节:;数据库事务是一个逻辑上的划分,有的时候并不是很明显,它可以是一个操作步骤,也可以是多个操作步骤。;在数据永久改变前,可以预览数据变化;;事务的特性如下:;不一致状态:数据库中包含失败事务的结果;数据库采用日志来保证事务的原子性,一致性和持久性,日志记录了事务对数据库所做的更新,如果某个事务在执行过程中发生错误,就可以根据日志,撤销事务对数据库已做的更改,使数据库退回到执行事务前的初始状态。;企业数据库系统(如数据库引擎实例)有责任提供一种机制,保证每个事务的物理完整性。;(3) 事务管理特性,强制保持事务的原子性和一致性。事务启动之后,就必须成功完成,否则数据库引擎实例将撤消该事务启动之后对数据所做的所有修改。;MARS使数据库应用程序允许应用程序在单一连接中交错执行多个请求,能在单个连接上保持多个活动语句,具体而言,每个连接可以具有多个活动的默认结果集。应用程序可以同时打开多个默认结果集,并且交错读取它们。应用程序可以在默认结果集打开的同时执行如INSERT、UPDATE、DELETE 和存储过程调用等语句。;显式事务;隐式事务;事务模式按连接级别进行管理。一个连接的事务模式发生变化对任何其它连接的事务模式没有影响。;如果事务成功,则提交。COMMIT语句保证事务的所有修改在数据库中都永久有效。COMMIT语句还释放事务使用的资源(例如,锁)。;(3)指定事务边界;osql工具是一个Microsoft Windows 32命令提示符工具,可以使用它运行Transact-SQL语句和脚本文件。;(4) 事务处理过程中的错误;12.1.5 显式事务 ;标记显式连接事务的起始点。;用来清除遇到错误的事务。该事务修改的所有数据都返回到事务开始时的状态。事务占用的资源将被释放。;ODBC API不支持显式事务,只支持自动提交和隐式事务。;自动提交模式是SQL Server数据库引擎的默认事务管理模式。每个Transact-SQL语句在完成时,都被提交或回滚。如果一个语句成功地完成,则提交该语句;如果遇到错误,则回滚该语句。只要没有显式事务或隐性事务覆盖自动提交模式,与数据库引擎实例的连接就以此默认模式操作。自动提交模式也是 ADO、OLE DB、ODBC和DB库的默认模式。;当连接以隐性事务模式进行操作时,SQL Server数据库引擎实例将在提交或回滚当前事务后自动启动新事务。无须描述事务的开始,只需提交或回滚每个事务。隐性事务模式生成连续的事务链。; 注意,在多个活动的结果集(MARS)会话中,Transact-SQL隐式事务将变成批范围的事务。如果批范围的事务在批处理完成时还没有提交或回滚,SQL Server将自动回滚该事务。;如果连接处于隐式事务模式,并且当前不在事务中,则执行表12-1任一语句如都可启动事务。;对于因为此设置为ON而自动打开的事务,用户必须在该事务结束时将其显式提交或回滚。否则,当用户断开连接时,事务及其包含的所有数据更改将被回滚。事务提交后,执行上述任一语句即可启动一个新事务。;SET IMPLICIT_TRANSACTIONS的设置是在执行或运行时设置的,而不是在分析时设置的。;对于应用程序而言,管理分布式事务很像管理本地事务。当事务结束时,应用程序会请求提交或回滚事务。不同的是,分布式提交必须由事务管理器管理,以尽量避免出现因网络故障而导致事务由某些资源管理器成功提交,但由另一些资源管理器回滚的情况。通过分两个阶段(准备阶段和提交阶段)管理提交进程可避免这种情况,这称为两阶段提交(Two-Phase Commit,2PC)。;如果事务管理器从所有资源管理器收到准备成功的消息,它将向每个资源管理器发送一个提交命令。然后,资源管理器就可以完成提交。如果所有资源管理器都报告提交成功,那么事务管理器就会向应用程序发送一个成功通知。如果任一资源管理器报告准备失败,那么事务管理器将向每个资源管理器发送一个回滚命令,并向应用程序表明提交失败。;(1)BEGIN TRANSACTION;(4)COMMIT WORK: 标志事务的结束。此语句的功能与COMMIT TRANSACTION相同,但 COMMIT TRANSACTION 接受用户定义的事务名称。;系统内置函数@@TRANCOUNT: 返回在当前连接上已发生的BEGIN TRANSACTION语句的数目。@@TRANCOUNT有时也称为全局变量。;在SQL Server Management Studio的【标准】工具栏上,单击【新建查询】按钮。此时将使用当前连接打开一个查询编辑器窗口。输入如下代码,单击【SQL编辑器】工具栏上的【执行】按钮,在【结

您可能关注的文档

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档