- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第21章 事务处理
第 21 章 事 务 处 理
SQL Server 是一个多任务多用户的数据库系统,所以在同一个时间中将进行很多个数
据库操作,SQL Server 使用锁和事务的机制来保证数据的一致性。本章将主要讲解与事务
处理相关的知识。
21.1 事 务
在对多个数据库对象执行顺序操作时,有时需要使用事务来保证整个操作过程的完整
性和数据库的一致性。本节将主要讲解事务的基础知识和如何在SQL Server 中使用事务。
21.1.1 事务概述
事务是单个的工作单元。在一个事务中可以定义多个数据修改操作,事务成功,则表
示在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分。如果事务操
作中途遇到错误,且必须取消或回滚,则包括错误发生之前的数据修改在内,所有数据修
改均会被取消。
事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属
性,称为原子性、一致性、隔离性和持久性(合称为 ACID )属性,只有这样才能成为一
个事务。
原子性(Atomicity ),也叫做不可部分完成性。事务必须是原子工作单元,对于
其数据修改,要么全都执行,要么全都不执行,不可能只执行了其中的一部分。
一致性(Consistency ),事务在完成时,必须使所有的数据都保持一致状态。在
相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。
所有的内部数据结构(如B 树索引或双向链表)在事务结束时都必须是正确的。
隔离(Isolation ),由并发事务所做的修改必须与任何其他并发事务所做的修改隔
离。事务识别数据时数据所处的状态,要么是另一并发事务修改它之前的状态,
要么是第二个事务修改它之后的状态,事务不会识别中间状态的数据。这称为可
串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时
的状态与原始事务执行的状态相同。
持久性(Durability ),事务完成之后,它对于系统的影响是永久性的。该修改即
使出现系统故障也将一直保持。
数据库应用程序可以指定事务何时开始与结束,控制整个事务的运行。事务是基于连
接的,一个连接中开始了一个事务后只要没有进行提交或回滚,则这个连接后面所有执行
第21 章 事务处理
的SQL 操作都是事务的一部分。SQL Server 以下列事务模式运行:
自动提交事务,每条单独的语句都是一个事务。例如一句简单的UPDATE 操作,
可能一次就更新了所有的数据,也可能出现错误不更新任何数据。
显式事务,每个事务均以BEGIN TRANSACTION 语句显式开始,以COMMIT 或
ROLLBACK 语句显式结束。这种事务的开始和结束就是通过人为操作,以命令来
完成。
隐式事务,不用明确的以BEGIN TRANSACTION 语句来激活事务,在前一个事务
完成时新事务隐式启动,但每个事务仍以COMMIT 或ROLLBACK 语句显式完成。
在连接上启用隐式事务需要使用SET IMPLICIT_TRANSACTIONS ON 命令。
批处理级事务,只能应用于多个活动结果集(Multiple Active Result Set ,MARS ),
在MARS 会话中启动的T-SQL 显式或隐式事务变为批处理级事务。当批处理完成
时没有提交或回滚的批处理级事务自动由SQL Server 进行回滚。
事务在激活后可以有 3 种办法结束事务。一种是使用 COMMIT 命令提交事务更改,
一种是使用 ROLLBACK 命令回滚事务更改,还有就是强行中断事务所在的连接。使用
KILL 命令可以中断指定的连接。中断连接后,连接中的事务将会回滚到事务开始前的
状态。
注意:KILL 命令无法结束系统进程、执行扩展存储过程和自己所属的进程。
21.1.2 使用事务
在SQL Server 中使用BEGIN TRANSACTION 命令可以显式地启动一个事务,该命令
的语法如代码21.1 所示。
代码 21.1 BEGIN TRANSACTION
文档评论(0)