资源描述
北京邮电大学世纪学院,数据库应用基础,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,7,章,数据库保护技术,7.1,数据库的安全性及,SQL Server,的安全管理,7.2,数据库完整性及,SQL Server,的完整性控制,7.3,数据库并发控制及,SQL Server,并发控制机制,7.4,数据库恢复技术与,SQL Server,数据恢复机制,7.1,数据库的安全性及,SQL Server,的安全管理,数据库的安全性是指保护数据库,以防止不合,法的使用造成的数据泄密、更改或破坏。,数据库安全,性控制的一般方法,用 户,DBMS,OS,DB,用户标识和鉴别 存取控制 操作系统安全保护 密码存储,用户标识与鉴别,1),用户输入用户名,(,用户标识号,),来标明用户身份。,2),通过回答口令标识用户身份。,3),通过回答对随机数的运算结果表明用户身份。,存取控制,(1),存取机制的构成,定义用户权限,并将用户权限登记到数据字,典中。,当用户提出操作请求时,系统进行权限检,查,拒绝用户的非法操作。,(2),存取机制的类别,1),自主存取控制,(DAC),用户对于不同的对象有不同的存取权限;不同,的用户对同一对象的存取权限也各不相同;用户可,将自己拥有的存取权限转授给其他用户。,2),强制存取控制,(MAC),每一个数据对象被标以一定的密级;每一个用,户也被授予某一个级别的许可证;对于任意一个对,象,只有具有合法许可证的用户才可以存取。,8.1.2 SQL Server,的安全体系结构,SQL Server,的安全体系结构,Windows NT,操作系统的安全防线,SQL Server,的运行安全防线,SQL Server,数据库的安全防线,SQL Server,数据库对象的安全防线,SQL Server,的安全认证模式,Windows(S),安全认证模式,混合安全认证模式,8.1.3 SQL Server,的用户和角色管理,登录的管理登录,(,亦称,Login,用户,),通过帐号和口令访问,SQL,Server,的数据库。,(1),查看安全性文件夹的内容,(2),创建一个登录用户,数据库用户的管理,(1)dbo,用户,dbo,用户即数据库拥有者或数据库创建者,,dbo,在其所拥有的数据库中拥有所有的操作权限。,(2)guest,用户,如果,guest,用户在数据库存在,则允许任意一个,登录用户作为,guest,用户访问数据库,其中包括那些,不是数据库用户的,SQL,服务器用户。,(3),创建新的数据库用户,数据库角色的管理,(1),在数据库角色中增加或移去用户,(2),创建新的数据库角色,8.1.4 SQL Server,的权限管理,SQL Server,权限种类:对象权限和语句权限,Transact-SQL,数据库对象,SELECT,(查询),表、视图、表和视图中的列,UPDATE,(修改),表、视图、表的列,INSERT,(插入),表、视图,DELETE,(删除),表、视图,EXECUTE,(调用过程),存储过程,DRI,(声明参照完整性),表、表中的列,Transact-SQL,语句,权限说明,CREATE DATABASE,创建数据库,由,SA,授予,SQL,服务器用户或角色,CREATE DEFAULT,创建缺省,CREATE PROCEDURE,创建存储过程,CREATE RULE,创建规则,CREATE TABLE,创建表,CREATE VIEW,创建视图,BACKUP DATABASE,备份数据库,BACKUP LOG,备份日志文件,对象权限的管理,语句权限的管理,8.2,数据库完整性及,SQL Server,的完整性控制,8.3,数据库并发控制及,SQL Server,的并发控制机制,数据库的并发控制就是控制数据库,防止多用,户并发使用数据库时造成数据错误和程序运行错,误,保证数据的完整性。,8.3.1,事务及并发控制的基本概念,事务的概念,事务是用户定义的一个数据库操作序列,这些,操作要么全做要么全不做,是一个不可分割的工作,单位。,在,SQL,语言中,定义事务的语句有三条:,BEGIN TRANSACTION,;,COMMIT,;,ROLLBACK,;,事务并发操作可能产生的数据不一致问题,T,1,T,2,T,1,T,2,T,1,T,2,1),读,A=20,1),读,A=50,读,B=100,和,=150,读,C=100,CC*2,写回,C,2),读,A=20,3)AA-1,写回,A=19,2),读,B=100,BB*2,写回,B=200,2),读,C=200,4),AA-1,写回,A=19,(A,少减一次,),3),读,A=50,读,B=200,和,=250,(,验算不对,),3)ROLLBACK,C,恢复为,100,(,错误的,C,值已读出,),(a),丢失数据,(b),不可重复读,(c),读“脏”数据,8.3.2,封锁及封锁协议,封锁是使事务对它要操作的数据有一定的控制,能力。封锁具有,3,个环节:,一个环节是申请加锁,即事务在操作前要对它,将使用的数据提出加锁请求;,第二个环节是获得锁,即当条件成熟时,系统,允许事务对数据加锁,从而事务获得数据的控制,权;,第三个环节是释放锁,即完成操作后事务放弃,数据的控制权。,锁的类型,排它锁(,Exclusive Locks,,简称,X,锁),排它锁也称为独占锁或写锁。一旦事务,T,对数据,对象,A,加上排它锁(,X,锁),则只允许,T,读取和修改,A,,其他任何事务既不能读取和修改,A,,也不能再对,A,加任何类型的锁,直到,T,释放,A,上的锁为止。,(2),共享锁(,Share Locks,,简称,S,锁),共享锁又称读锁。如果事务,T,对数据对象,A,加上,共享锁(,S,锁),其他事务只能再对,A,加,S,锁,不能加,X,锁,直到事务,T,释放,A,上的,S,锁为止。,封锁协议,(1),一级封锁协议。,一级封锁协议是事务,T,在修改数据之前必须先对,其加,X,锁,直到事务结束才释放。,(2),二级封锁协议。,二级封锁协议是:事务,T,对要修改数据必须先加,X,锁,直到事务结束才释放,X,锁;对要读取的数据必,须先加,S,锁,读完后即可释放,S,锁。,(3),三级封锁协议。,三级封锁协议是事务,T,在读取数据之前必须先对,其加,S,锁,在要修改数据之前必须先对其加,X,锁,直,到事务结束后才释放所有锁。,T,1,T,2,T,1,T,2,T,1,T,2,1)Xlock A,获得,1)Slock A,Slock B,读,A=50,读,B=100,A,B=150,1)Xlock C,读,C=100,CC*2,写回,C=200,2),读,A=20,Xlock A,等待,3)AA-1,写回,A=19,Commit,Unlock A,等待,等待,等待,2),Xlock B,等待,等待,2),Slock C,等待,等待,3),读,A=50,读,B=100,A,B=150,Commit,Unlock A,Unlock B,等待,3)ROLLBACK,(C,恢复为,100),Unlock C,等待,等待,4),获得,Xlock A,读,A=19,AA-1,写回,A=18,Commit,Unlock,4),获得,Xlock,读,B=100,BB*2,写回,B=200,Commit,Unlock B,4),获得,Slock C,读,C=100,Commit C,Unlock C,(a),没有丢失修改,(b),可重复读,(c),不读,“,脏,”,数据,8.3.3,封锁出现的问题及解决方法,活锁和死锁,(1),活锁 在多个事务请求对同一数据封锁时,总是使某,一用户等待的情况称为活锁。解决活锁的方法是采,用先来先服务的方法,即对要求封锁数据的事务排,队,使前面的事务先获得数据的封锁权。,(2),死锁,多事务交错等待的僵持局面称为死锁。解决死,锁有两类方法:一是采用一定措施来预防死锁的发,生;二是采用一定手段定期诊断系统中有无死锁,,若有则解除之。,防死锁通常有两种方法:,1),一次封锁法:要求每个事务必须一次将所有要使用的数据全部加锁,否则该事务不能继续执行。,2),顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。,8.4,数据库恢复技术与,SQL Server,的数据恢复机制,8.4.1,故障的种类,事务内部的故障,系统故障,介质故障,计算机病毒,用户操作错误,8.4.2,数据恢复的实现技术,建立备份数据的常用技术,1),数据转储,静态转储和动态转储,海量转储和增量转储,2),登记日志文件,日志文件的格式和内容,日志文件是用来记录对数据库的更新操作的文,件。,日志文件的作用,日志文件的主要用于数据库恢复。,当数据库文件毁坏后,可重新装入后援副本把,数据库恢复到转储结束时刻的正确状态,再利用日,志文件,把已完成的事务进行重做处理。,8.4.3 SQL Server,的数据备份和恢复机制,1.SQL Server,的备份形式和操作方式,1),三种备份形式。,完全备份:海量备份,将数据库完全复制到备份文件中,事务日志备份:将备份发生在数据库上的事务,增量备份:备份最近一次完全备份以后数据库发生变化的数据。,2),数据库进行备份和恢复操作的方式。,静态的备份和恢复方式。在进行数据备份或恢复操作时,,SQL,服务器不接受任何应用程序的访问请求,只执行备份或恢复操作。,动态的备份和恢复方式。在进行数据备份或恢复操作时,,SQL,服务器同时接受应用程序的访问请求。,
展开阅读全文