教学课件 SQL Server 2014数据库应用与开发教程(第四版).ppt

教学课件 SQL Server 2014数据库应用与开发教程(第四版).ppt

  1. 1、本文档共795页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.3.5 锁的类别 6. 大容量更新锁(bulk update lock,BU) 大容量更新锁 (BU)允许多个会话向表中大容量加载数据,同时阻塞进程对该表执行大容量加载以外的操作。 如果数据资源上的一种锁允许在同一资源上放置另一种锁,就认为这两种锁是兼容的。 当一个事务持有数据资源上的锁,而第二个事务又请求同一资源上的锁时,系统将检查两种锁状态以确定它们是否兼容。如果锁是兼容的,则将锁授予第二个事务;如果锁不兼容,则第二个事务必须等待,直到第一个事务释放锁,才可以获取对资源的访问权并处理资源。 9.3.5 锁的类别 如表9-1所示是给出了各种锁之间的兼容性。 9.3.6 如何在SQL Server中查看数据库中的锁 可以使用快捷键“Ctrl+2”来查看锁信息,也可以通过系统存储过程sp_lock来查看数据库中的锁。 1. 使用SSMS查看锁信息 打开SQL Server 2014的SSMS,在查询分析器中使用快捷键“Ctrl+2”,即可查看到进程、锁以及对象等信息,如图9-1所示。 图9-1 查看锁的信息 9.3.6 如何在SQL Server中查看数据库中的锁 2. 使用系统存储过程sp_lock查看锁的信息 SQL Server 2014提供了系统存储过程帮助我们查看锁的信息。语法格式如下: EXECUTE sp_lock 执行结果如图9-2所示。 图9-2 使用系统存储过程查看锁信息 9.3.6 如何在SQL Server中查看数据库中的锁 可以使用快捷键“Ctrl+2”来查看锁信息,也可以通过系统存储过程sp_lock来查看数据库中的锁。 1. 使用SSMS查看锁信息 打开SQL Server 2014的SSMS,在查询分析器中使用快捷键“Ctrl+2”,即可查看到进程、锁以及对象等信息,如图9-1所示。 图9-1 查看锁的信息 9.3.7 死锁及其防止 在数据库并发执行中,两个或更多个事务对锁的争用会引起死锁。通俗地讲,死锁就是两个事务各对一个资源加锁,都想使用对方的资源,但同时又不愿放弃自己的资源,于是一直处于永远等待对方放弃资源。如果不进行外部干涉,死锁将一直持续。死锁会造成资源的大量浪费,甚至会使系统崩溃。 9.3.7 死锁及其防止 在SQL Server 2014中,解决死锁的方法是:系统自动进行死锁检测,终止操作较少的事务以打断死锁,并向作为死锁牺牲品的事务发送错误信息。 处理死锁最好的方法就是防止死锁的发生,即不让满足死锁条件的情况发生。为此,用户需要遵循以下原则: (1) 尽量避免并发地执行涉及到修改数据的语句。 (2) 要求每个事务一次就将所有要使用的数据全部加锁,否则就不予执行。 (3) 预先规定一个加锁顺序。所有的事务,都必须按这个顺序对数据进行加锁。例如,不同的过程在事务内部对对象的更新执行顺序应尽量保持一致。 (4) 每个事务的执行时间不可太长,尽量缩短事务的逻辑处理过程,及早提交或回滚事务。对程序段长的事务可以考虑将其分割为几个事务。 (5) 一般不要修改SQL Server事务的默认级别。不推荐强行加锁。 9.4 游标 除了在SELECT查询中使用WHERE子句来限制只有一条记录被选中外,Transact-SQL语言并没有提供查询表中单条记录的方法,但是我们常常会遇到需要逐行读取记录的情况。因此引入了游标,来进行面向单条记录的数据处理。 9.4.1 游标(Cursor)概述 1. 游标的概念 游标是一种处理数据的方法,具有对结果集进行逐行处理的能力。可以把游标看为一种特殊的指针,它与某个查询结果相联系,可以指向结果集的任意位置,可以将数据放在数组、应用程序中或其他的地方,允许用户对指定位置的数据进行处理。 使用游标,可以实现如下功能: ●允许对SELECT返回的表中的每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作; ●从表中的当前位置检索一行或多行数据; ●游标允许应用程序提供对当前位置的数据进行修改、删除的能力; ●对于其他用户对结果集包含的数据所做的修改,支持不同的可见性级别; ●提供脚本、存储过程和触发器中用于访问结果集中的数据的语句。 9.4.2 声明游标 声明游标是指用DECLARE语句声明或创建一个游标。声明游标主要包括以下内容:游标名称、数据来源、选取条件和属性。 声明游标的DECLARE语法格式如下: 各参数的含义说明如下: (1) 游标的作用域有两个可选项:LOCAL和GLOBAL。 9.4.2 声明游标 ●LOCAL限定游标的作用范围为其所在的存储过程、触发器或批处理中,当建立游标的存储过程执行结束后,游标就会被自动释放。LOCAL为系统默认选项。 ●GLOBAL定义游标的作用域为整个用户的连接时

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:7201060146000004

1亿VIP精品文档

相关文档