数据库原理与SQL Server 第9章 保证数据完整性.

Slides:



Advertisements
Similar presentations
Data type P64 ‘’ 转义字符 P67 P68 EXE,选出某个教师的学生中最新的一 个,要姓名, ID (,LIMIT ) EXISTS,NOT EXISTS P409 Q,EXISTS 和 in 的区别( 1000 ,查询结果)
Advertisements

實踐國中綜合活動. 我們的團隊 輔導 — 邱敏芳主任、洪穎馨組長、朱孝安組 長、徐維莉師、蔡嘉容師、蔡燕娟師 童軍 --- 蘇月琴團長、蔡盟玉師 家政 --- 阮雅倩師、李怡慧師、蔡佩瑩師.
行政事业单位资产管理信息系统培训 讲师:姚珂 行政事业单位资产管理信息系统培训. 2 系统总体功能介绍 1 软件安装与数据初始 软件安装与数据初始 2 软件日常操作介绍 软件日常操作介绍 4 用户管理及账套维护 用户管理及账套维护 5 目 录目 录目 录目 录 参数配置与数据上报.
教学网站: 数据库及应用 授课教师:岳静 Tel: 教学网站:
武汉库得克 软件有限公司 公司简介 发展机遇 特点 一家专注于质量管理平台和整体 解决方案的提供商
都是作假惹的禍 假 GO ~.
第15章 备份与恢复数据库 日志文件 基本概念 恢复数据库的基本原理 数据库故障的种类 备份数据库 备份的内容和时间 备份的一般方法
第五章 话语的语用意义(上) 主讲人:周明强.
主題─ 悌 授課教師:謝宛琳.
第四章 数据库管理和使用.
♥走馬瀨露營心得分享 二年七班 19號 鄭宜欣.
客家围龙屋 想知道梅州有哪些好吃好玩的吗?那接下来就让我带你去看吧!!GO。。。 梅州游乐篇.
数据库原理及应用 课程导引 成都东软学院.
新竹二日遊 準備出發囉!!GO.
校园信息管理系统 河北科技大学网络中心 2000/4/10.
第2讲 Transact-SQL语言.
第5章 索引及视图操作 数据库原理应用与实践 SQL SERver2014(第2版) 主编 贾铁军 科学出版社 编著 陈国秦 万程 邢一鸣
主办:泰兴市质量强市领导小组办公室 承办:泰 兴 市 市 场 监 督 管 理 局.
第14章 預存程序 14-1 預存程序的基礎 14-2 建立與執行預存程序 14-3 預存程序的參數傳遞 14-4 預存程序的傳回值
徵收苗栗市福全段147、1588及文心段10、11地號等4筆土地之
数据库原理及应用 第10章 事务与锁 10.1 事务 10.2 锁.
讲 义 大家好!根据局领导的指示,在局会计科和各业务科室的安排下,我给各位简要介绍支付中心的工作职能和集中支付的业务流程。这样使我们之间沟通更融洽,便于我们为预算单位提供更优质的服务。 下面我主要从三方面介绍集中支付业务,一是网上支付系统,二是集中支付业务流程及规定等,
全球暖化 想知道全球暖化的嚴重性嗎? 那就繼續看下去吧!! 組員:陳儀君60524 蘇鈺祺60526 于玉琳60528 林宥嫻60521.
中国人民公安大学经费管理办法(试行) 第一章总则 第四条:“一支笔” “一支笔”--仅指单位主要负责人。负责对本 单位的经费进行审核审批。
第5章 数据库保护 之事务.
科目:台灣地理環境 組別:第三組 班級:四生三A 組員:古如旭D 陳芷湉D 許妙華D
2006年台灣醫學中心大搜查 聰明病人 完全就醫指南.
转正述职报告 乐恩公司 史航
綜合活動活動學習領域的教學應用 愛的路上 EZ GO !!.
飛天小女警遊縣警局.
主題樂園的開發評估與規劃.
数据库原理 Database Principles 第五章 数据库完整性 Database Principles.
花蓮二日遊 花蓮兩天一日遊 製作人 :吳佳育.
復興國中95學年度生涯檔案製作簡介.
《生活与哲学》第一轮复习 第七课唯物辩证法的联系观.
建立/修改/刪除資料庫 資料庫組成檔案 建立資料庫: 資料(庫)檔案 交易記錄檔 使用Enterprise Manager工具 自助法:
第1章 SQL Server 关系数据库简介 1.1 SQL Server 特点 1.2 SQL Server的安装和配置
第 3 章 熟悉 SQL Server 的工作平台.
SQL Server 2000 数据库入门.
2013年教育事业统计操作系统 2013年7月.
5 数据库管理与保护 数据库运行的最小逻辑工作单位是事务,所有对数据库的操作,都以事务作为一个整体来执行或撤销。
第9章 SQL Server的数据库保护技术 教学目标:通过本章学习,了解SQL Server的安全体系结构的含义和安全认证模式的分类;掌握SQL Server登录账号、用户账号及角色的创建方法;熟悉权限的分类,掌握对象权限和语句权限的管理方法;明确SQL Server中数据完整性的种类,掌握数据完整性实现的具体方法;熟悉SQL.
第9章 事务.
第7章 SQL Server代理服务 7.1 SQL Server代理服务配置 7.2 定义操作员 7.3 作业管理 7.4 警报管理
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
iRepor报表设计基础 IReport安装 普通实体报表 数据结果集报表 工作流主从报表 饼状图报表 柱状图,曲线图报表 条形码报表
实验二讲评 … 张榆….
一、選擇題 ( )1、下列敘述何者錯誤? (A)由彈弓射出的石子具有能量 (B)一物體具有作功的本領,則此物具有能 量 (C)被壓縮的彈簧具有能量,被拉長的彈簧 則不具有能量 (D)將地面的重物,吊到高處則此物具有能 量。 C.
数据库应用技术 SQL Server 2005.
複詞三胞胎(偏義複詞、同義複詞、反義複詞)
第11章 事务与锁 11.1 事务Transact 11.2 数据并发的问题 11.3 锁Lock 11.4 事务隔离级别.
4.2 视图 (1) 视图是一个虚拟表,其内容来自对表查询的基础上。
圖畫成語 Go !Go ! Go ! 遊戲說明.
17 交易處理與鎖定 17-1 交易的基礎 17-2 交易處理 17-3 並行控制 17-4 資料鎖定 17-5 死結問題.
An Introduction to Database System
实时计算平台及相关业务实践 Baidu.inf.dc ChaiHua .
讲课人:王璞 浙江工商职业技术学院.
微信商城系统操作说明 色卡会智能门店.
实验一讲评 … 张榆….
視 覺 大 挑 戰 吉米李.
SQL Server2000概述 SQL Server简介 SQL Server安装 SQL Server数据库 2019/5/8.
第11章 安全管理 教学提示:数据库安全是关系数据库中的非常重要的方面,包括了系统安全、数据安全、资源管理、用户管理、权限管理、角色管理、口令管理以及授权、认证、审计等相当多方面的内容。本章讲述有关数据库安全方面的知识。 数据库系统的安全性是每个数据库管理员都必须认真考虑的问题。SQL Server.
響應立法院親民黨團擴大舉辦向全民徵文 《若我有8800億,要怎麼改造台灣!?》
學生端 操作說明.
天澤堂兒童三色GO 高小級主日學 導師:李志誠 黃少華 2011年10月8日
大綱 一.受試者之禮券/禮品所得稅規範 二.範例介紹 三.自主管理 四.財務室提醒.
手机淘宝“变形”产品—微淘 操作流程指南 (内测版).
多姿多彩的世界.
看圆如何七十二变 微建筑早课.
作文教學--遊記篇 適用年級:五年級 教學者:鄭文娟老師.
Presentation transcript:

数据库原理与SQL Server 第9章 保证数据完整性

第9章 保证数据完整性 9.1 构造Transact-SQL执行单元 —批处理 9.2 保证数据完整性—事务 9.3 维护数据一致性—锁 第9章 保证数据完整性 9.1 构造Transact-SQL执行单元 —批处理 9.2 保证数据完整性—事务 9.3 维护数据一致性—锁 9.4 处理错误— @@ERROR 实训 错误的捕获和处理

9.1 构造Transact-SQL执行单元 —批处理 批处理是一组SQL语句的集合,一个批处理以批结束符GO而终结。批处理中的所有语句被一次提交给SQL Server 2000,SQL Server 2000将这些语句编译为一个执行单元,如果出现编译错误,SQL Server 2000将取消整个批处理内所有语句的执行。 例9-1 在数据库student中建立一个名为s_view的视图。 脚本:

9.2 保证数据完整性—事务 问题:如果在修改了数据库中的数据之后又立即意识到不该做这些修改,应该怎样处理的呢? 9.2 保证数据完整性—事务 问题:如果在修改了数据库中的数据之后又立即意识到不该做这些修改,应该怎样处理的呢? 最简单的办法,就是重新输入这些数据。但是,如果已经修改了多个表中的一些数据时,想要重新输入,就比较困难了。 另一种方法是自动地将数据恢复到它们修改之前的原始状态。为了解决这样的问题,SQL Server 2000提供了事务和锁来保证数据的一致性和完整性。

9.2.1 事务的属性 事务是构成单一逻辑单元的操作的集合。 事务必须满足4个要求,称为ACID属性,即原子性、一致性、隔离性和持久性。

1. 原子性 如果事务成功,SQL Server 2000确保在事务中所有的数据修改作为一个整体。如果事务没有成功,就不会有任何修改发生。也就是说,SQL Server 2000能确保事务的原子性。事务要想取得成功,事务中的每一个操作(语句)都必须成功。如果其中的任何一个操作失败了,则整个事务就会失败,而且自事务开始所做的任何修改都会被撤销。

2. 一致性 SQL Server 2000能保证事务的一致性。一致性意味着全部数据都保持在一致的状态。在一个事务开始之前,数据库处于一致的状态,当事务结束后,不管它是成功还是失败,数据库还应该处于一致的状态。

3. 隔离性 如果有两个或者多个事务,这些事务必须按照一定的顺序先后执行,而不能在执行一个事务的同时,又穿插执行另外的一个事务,也就是说,多事务并发执行时,应保证执行的结果是正确的,如同单用户环境一样。这可以通过锁来实现。

4. 永久性 事务一旦完成,它对数据库所进行的修改将被永久保存,即使以后系统发生故障,也应该保留这个事务执行的痕迹。 SQL Server 2000的事务分为显式事务、隐式事务、自动事务和分布式事务。

9.2.2 显式事务 显式事务就是用户使用“事务处理语句”定义的事务。 事务处理语句主要包括: (1)BEGIN TRANSACTION 9.2.2 显式事务 显式事务就是用户使用“事务处理语句”定义的事务。 事务处理语句主要包括: (1)BEGIN TRANSACTION 作用是启动一个事务,它标志着一个事务的开始。 (2)COMMIT TRANSACTION和COMMIT WORK 作用是提交事务。在事务中对数据库所做的修改,将在此时进行提交,它标志着事务的结束。 (3)ROLLBACK TRANSACTION和ROLLBACK WORK 作用是回滚事务。通常如果在事务的执行过程中发生了错误,需要执行这个语句,放弃事务中对数据库所做的修改,使数据库恢复到事务开始之前的状态。

例9-2 提交事务。 脚本: 例9-3 回滚事务。

9.2.3 隐式事务 (1)SET IMPLICIT_TRANSACTION ON。 脚本: 9.2.3 隐式事务 (1)SET IMPLICIT_TRANSACTION ON。 使SQL Server 2000进入隐式事务处理模式,使用COMMIT TRANSACTION/WORK语句提交事务,或者使用ROLLBACK TRANSACTION/WORK回滚事务。 (2)SET IMPLICIT_TRANSACTION OFF。 退出隐式事务处理模式。 例9-4 隐式事务实例。 脚本:

9.2.4 自动事务 自动事务是SQL Server 2000默认的事务处理模式。 9.2.4 自动事务 自动事务是SQL Server 2000默认的事务处理模式。 在这种模式下,如果任何一个语句执行成功,则它对数据库所做的修改马上被自动提交,反之如果失败,则自动回滚。

9.2.5 分布式事务 SQL Server 2000可以通过网络实现跨服务器的数据操作,这种事务称为“分布式事务”。分布式事务有非常强大的功能,但必须通过网络来传送数据,因此出错的几率也就大大增加了。为了解决这个问题,分布式事务的处理被分成两个阶段:准备阶段和提交阶段,也就是所谓的两阶段提交。 (1)准备阶段。 (2)提交阶段。

分布式事务处理过程 (1)使用BEGIN DISTRIBUTED TRANSACTION语句启动一个分布式事务。此时该服务器成为本事务管理服务器。 (2)应用程序执行分布式查询或执行远程服务器上的存储过程。 (3)事务管理器调用MS DTC,通知远程服务器开始参与该分布式事务。 (4)应用程序执行提交事务或回滚事务的语句来结束事务。此时事务管理器将调用MS DTC来管理两阶段提交过程,本服务器和远程服务器提交或回滚事务。

9.2.6 使用事务时的注意事项 (1)事务应尽可能短。 (2)定义有效的锁策略。 锁可以防止用户读取已经被修改但还没有提交的数据。 (3)避免用户在事务中输入数据。 (4)在浏览数据时避免打开事务。 这有助于减少锁定问题。除此之外,事务的最大作用在于修改数据,而不是检索数据。 (5)减少事务中所访问的数据量。 事务处理中往往会锁定数据,因此能够减少其他用户可能遇到的锁问题,提高数据库的并发性。

9.3 维护数据一致性—锁 SQL Server 2000使用锁来防止多个用户在同一时间内对同一数据进行修改,并能防止一个用户查询正在被另一个用户修改的数据,防止可能发生的数据混乱。锁有助于保证数据库逻辑上的一致性。

9.3.1 锁的类型 (2)共享锁:允许读取锁定资源。 (3)更新锁:锁定资源。 (4)结构锁:结构修改锁;结构稳定锁。 9.3.1 锁的类型 (1)排它锁:不允许读取、修改锁定资源。 (2)共享锁:允许读取锁定资源。 (3)更新锁:锁定资源。 (4)结构锁:结构修改锁;结构稳定锁。 (5)意向锁:意向锁说明SQL Server 2000有在资源上获得共享锁或者排它锁的意向, 包括: ①共享意向锁。指明事务试图在某一资源上获得共享锁。 ②排它意向锁。指明事务试图在某一资源上获得排它锁。 ③共享排它意向锁。指明事务试图在一些资源上获得共享锁,而在其他一些资源上获得排它锁。

9.3.2 锁的粒度 根据不同的情况,SQL Server 2000中的锁可以灵活地运用在不同的资源层次(也就是粒度)上。锁的粒度越大,被锁定的数据越多,数据的并行性就越低。 锁的粒度可以分为以下几种。 (1)RID行标识符:锁定表中的单行数据。 (2)键值:锁定索引中的单行数据。 (3)页面:锁定一个数据页面或者索引页面,页面的大小为 8KB。 (4)区域:锁定一组连续的数据页面或者索引页面。 (5)表:锁定整个表。 (6)数据库:锁定整个数据库。

9.3.3 死锁 在多用户环境中,当多个用户分别锁定不同的资源,而又在等待其他用户释放已锁定资源时,有可能出现无限制等待的情况,称为死锁 。 9.3.3 死锁 在多用户环境中,当多个用户分别锁定不同的资源,而又在等待其他用户释放已锁定资源时,有可能出现无限制等待的情况,称为死锁 。 设置事务优先级语句的语法格式为: SET DEADLOCK_PRIORITY {low|normal} 设置事务请求锁定的最长等待时间语句的语法格式为: SET LOCK_timeout <时间长度>

9.3.4 检索锁信息 sp_lock [[@spid1=]‘<进程ID1>’][,[@spid2=]‘<进程ID2>’]。 其中,“进程ID1”和“进程ID2”是来自master.dbo.sysprocesses的SQL Server 2000进程ID号,数据类型为int,默认值为NULL。如果没有指定进程ID号,则显示所有锁的信息。 例9-5 显示所有锁的信息。 脚本: USE master GO sp_lock

9.3.5 使用锁时的注意事项 (1)遵守事务指导原则。 9.3.5 使用锁时的注意事项 (1)遵守事务指导原则。 (2)对应用程序进行强度测试。强度测试是指大量用户执行相同操作,实际执行操作的用户数量应为应用程序可能有的最多用户数。 (3)允许用户中止长时间运行的查询 (4)在查询期间禁止用户输入以减少查询的运行时间 (5)当一个查询在运行时,它将在资源上保持—个某种类型的锁。 (6)虽然必要时能够改变查询和对象的锁,但实际应用中应该尽可能让SQL Server 2000来管理锁。

9.4 处理错误— @@ERROR 用户或者应用程序在访问数据库时,可能会出现使用违背数据库要求的访问方式,即非正常的数据访问或者操作,这时可能导致意外的发生。 SQL Server 2000具有完备的错误处理功能,能够完成: (1)判断错误是否发生。 (2)通知用户发生了错误。 (3)决定操作过程。 (4)恢复或放弃修改。

9.4.1 错误的产生 例9-6 插入一行非法的选课数据。

9.4.2 错误的捕获 1.@@ERROR 如果为0则一切正常。 如果这个值不为0,则表示已经发生了一个错误。 2.@@ERROR的使用 9.4.2 错误的捕获 1.@@ERROR 如果为0则一切正常。 如果这个值不为0,则表示已经发生了一个错误。 2.@@ERROR的使用 IF @@ERROR<>0 BEGIN --错误处理部分 END 可以通过@@ERROR来检查是否发生了特定的错误。

9.4.3 错误的处理 一般情况下,在错误发生后应该采取如下一些错误处理方法: (1)放弃任务。 (2)立即退出或尝试继续执行。 9.4.3 错误的处理 一般情况下,在错误发生后应该采取如下一些错误处理方法: (1)放弃任务。 (2)立即退出或尝试继续执行。 (3)向用户发送消息解释错误原因。

9.4.4 错误处理实例 例9-7 编写存储过程,插入学生选课信息。 脚本: 9.4.4 错误处理实例 例9-7 编写存储过程,插入学生选课信息。 脚本: 例9-8 表s中存在学号为“1001”的学生信息,表c中存在课程号为“c001”的课程信息,且表sc中不存在学号为“1001”、课程号为“c001”的学生信息,执行以下脚本将显示成功信息。 exec SCInsert '1001', 'c001'

9.4.4 错误处理实例 例9-9 表S中不存在学号为“1001”的学生信息,或表C中不存在课程号为“C001”的课程信息,执行上述存储过程的情况。

实训 错误的捕获和处理 实验名称:错误的捕获和处理 目的要求:掌握错误捕获及处理的方法 操作步骤: (1)启动查询分析器。 实训 错误的捕获和处理 实验名称:错误的捕获和处理 目的要求:掌握错误捕获及处理的方法 操作步骤: (1)启动查询分析器。 (2)根据要求创建存储过程。存储过程名要求为<班级> _<学号>_cdelete,有一个参数@cno,表示课程号。该存储过程的功能是:删除表c中课程号等于@cno的课程信息,并要求具有错误捕获和处理的能力。 (3)执行存储过程,分析结果。