数据库的安全与保护.ppt
SQL Server数据库技术及应用教程,电子工业出版社同名教材配套电子教案,14.1 数据库的安全性14.2 数据库的完整性14.3 数据库的备份和恢复14.4 实训学籍管理系统数据库的安全与保护,第14章 数据库的安全与保护,14.1.1 数据库系统的安全性 数据库系统自身的安全性控制主要由数据库管理系统(DBMS)进行访问控制来实现。目前普遍采用的关系数据库系统,如SQL Server和Oracle等一般通过外模式或视图机制以及授权机制来进行安全性控制。1外模式或视图机制 外模式或视图都是数据库的子集,前面已经讲到它们可以提高数据的独立性,除此之外,因为对于某个用户来说,他只能接触到自己的外模式或视图,这样可以将其能看到的数据与其它数据隔离开,所以它们是一种重要的安全性措施。2授权机制 授权是给予用户一定的权限,这种访问权限是针对整个数据库和某些数据库对象的某些操作的特权。,14.1 数据库的安全性,14.1.2 SQL Server 2008的安全机制 SQL Server 2008为SQL服务器提供两种安全验证模式,系统管理员可选择合适的安全验证模式。1SQL Server 2008的安全体系结构(1)操作系统的安全防线 在用户使用客户计算机通过网络实现对SQL Server服务器的访问时,用户首先要获得客户计算机操作系统的使用权。(2)服务器的安全防线 SQL Server服务器的安全性是建立在控制服务器登录账号和口令的基础上的。(3)SQL Server数据库的安全防线 在用户通过SQL Server服务器的安全性检查以后,将直接面对不同的数据库入口。(4)SQL Server数据库对象的安全防线 数据库对象的安全性是核查用户权限最后一个安全等级。,14.1 数据库的安全性,14.1.2 SQL Server 2008的安全机制 2SQL Server 2008的身份验证模式 安全身份验证用来确认登录SQL Server的用户的登录帐号和密码的正确性,由此来验证该用户是否具有连接SQL Server的权限。SQL Server 2008有两种身份验证模式:Windows验证模式和SQL Server验证模式。(1)Windows验证模式 用户登录Windows时进行身份验证,登录SQL Server时就不再进行身份验证。(2)SQL Server验证模式 在SQL Server验证模式下,SQL Server服务器要对登录的用户进行身份验证。当SQL Server在Windows XP或Windows 2003等操作系统上运行时,系统管理员设定登录验证模式的类型可为Windows验证模式和混合模式。,14.1 数据库的安全性,14.1.2 SQL Server 2008的安全机制 3设置SQL Server的安全验证模式 用户可以在SSMS中设置验证模式,操作步骤如下。启动SSMS,右键单击要设置验证模式的服务器,从弹出的快捷菜单中选择“属性”菜单项。打开SQL Server“服务器属性”对话框,选择“安全性”选项页。在“服务器身份验证”选项栏中,可以选择要设置的验证模式,同时在“登录审核”中还可以选择跟踪记录用户登录时的哪种信息,例如登录成功或登录失败的信息等。在“服务器代理帐户”选项栏中设置当启动并运行SQL Server时,默认的登录者中哪一位用户。,14.1 数据库的安全性,14.1.3 用户和角色管理 SQL Server用户和角色分为两级:一种为服务器级用户和角色;另一种是数据库级用户和角色。1登录的管理 登录也称Login用户,即SQL服务器用户。服务器用户通过账号和口令访问SQL Server的数据库。SQL Server 2008有一些默认的登录,其中,Sa和BUILTIN/Administors最重要。Sa是系统管理员的简称,BUILTIN/Administors是Windows管理员的简称,它们是特殊的用户账号,拥有SQL Server系统上所有数据库的全部操作权限。,14.1 数据库的安全性,14.1.3 用户和角色管理 2数据库用户的管理 数据库中的用户账号和登录账号是两个不同的概念。一个合法的登录账号只表明该账号通过了Windows认证或SQL Server认证,不能表明其可以对数据库数据和对象进行操作。一个登录账号总是与一个或多个数据库用户账号相对应,即一个合法的登录账号必须要映射为一个数据库用户账号,才可以访问数据库。SQL Server的任何一个数据库中都有两个默认用户:dbo(数据库拥有者)和(guest客户用户)。dbo用户即数据库拥有者,dbo在其所拥有的数据库中拥有所有的操作权限。dbo的身份可被重新分配给另一个用户,系统管理员sa可以作为他所管理系统的任何数据库的dbo用户。如果guest用户在数据库中存在,则允许任意一个登录用户作为guest用户访问数据库,其中包括那些不是数据库用户的SQL服务器用户。,14.1 数据库的安全性,14.1.3 用户和角色管理 3服务器角色的管理 SQL Server管理者可以将某一组用户设置为某一角色,这样只要对角色进行权限设置便可以实现对所有用户权限的设置,大大减少了管理员的工作量。登录账户可以被指定给角色,因此,角色又是若干账户的集合。角色又分为服务器角色和数据库角色两种。(1)服务器角色的基本概念 服务器角色是指根据SQL Server的管理任务,以及这些任务相对的重要性等级来把具有SQL Server管理职能的用户划分为不同的用户组,每一组所具有的管理SQL Server的权限都是SQL Server内置的。服务器角色存在于各个数据库之中,要想加入用户,该用户必须有登录帐号以便加入到角色中。,14.1 数据库的安全性,14.1.3 用户和角色管理 3服务器角色的管理(2)常用的固定服务器角色SQL Server 2008提供了八种常用的固定服务器角色,其具体含义如下所示:系统管理员(sysadmin):拥有SQL Server所有的权限许可;服务器管理员(Serveradmin):管理SQL Server服务器端的设置;磁盘管理员(diskadmin):管理磁盘文件;进程管理员(processadmin):管理SQL Server系统进程;安全管理员(securityadmin):管理和审核SQL Server系统登录;安装管理员(setupadmin):增加、删除连接服务器,建立数据库复制以及管理扩展存储过程;数据库创建者(dbcreator):创建数据库,并对数据库进行修改。批量数据输入管理员(bulkadmin):管理同时输入大量数据的操作。,14.1 数据库的安全性,14.1.3 用户和角色管理 4数据库角色管理 数据库角色是为某一用户或某一组用户授予不同级别的管理或访问数据库以及数据库对象的权限,这些权限是数据库专有的,并且还可以给一个用户授予属于同一数据库的多个角色。SQL Server提供了两种类型数据库角色:固定的数据库角色和用户自定义的数据库角色。(1)固定的数据库角色 固定的数据库角色是指SQL Server已经定义了这些角色所具有的管理、访问数据库的权限,而且SQL Server管理者不能对其所具有的权限进行任何修改。SQL Server中的每一个数据库中都有一组固定的数据库角色,在数据库中使用固定的数据库角色可以将不同级别的数据库管理工作分给不同的角色,从而有效地实现工作权限的传递。,14.1 数据库的安全性,14.1.3 用户和角色管理 4数据库角色管理(2)用户自定义数据库角色 创建用户定义的数据库角色就是创建一组用户,这些用户具有相同的一组许可。如果一组用户需要执行在SQL Server中指定的一组操作并且不存在对应的Windows组,或者没有管理Windows用户帐号的许可,就可以在数据库中建立一个用户自定义的数据库角色。用户自定义的数据库角色有两种类型:即标准角色和应用程序角色。标准角色通过对用户权限等级的认定而将用户划分为不用的用户组,使用户总是相对于一个或多个角色,从而实现管理的安全性。所有的固定的数据库角色或SQL Server管理者自定义的某一角色都是标准角色。,14.1 数据库的安全性,14.1.4 权限管理 1权限的类型 在SQL Server中包括三种类型的权限:即对象权限、语句权限和预定义权限。(1)对象权限 对象权限表示对特定的数据库对象(即表、视图、字段和存储过程)的操作权限,它决定了能对表、视图等数据库对象执行哪些操作。(2)语句权限 语句权限表示对数据库的操作权限,也就是说,创建数据库或者创建数据库中的其他内容所需要的权限类型称为语句权限。(3)预定义权限 预定义权限是指系统安装以后有些用户和角色不必授权就有的权限。,14.1 数据库的安全性,14.1.4 权限管理 2权限的管理权限的管理主要是完成对权限的授权、拒绝和回收。授予权限:允许某个用户或角色,对一个对象执行某种操作或语句。使用SQL语句GRANT来实现。拒绝权限:拒绝某个用户或角色对一个对象进行某种操作。使用SQL语句DENY实现。取消权限:即不允许某个用户或角色,对一个对象执行某个操作或语句。用SQL语句的REVOKE实现。其中,不允许和拒绝是不同的。不允许执行某个操作,可以通过间接授权来获得相应的权限,而拒绝执行某种操作,间接授权无法起作用只有通过直接授权才能改变。,14.1 数据库的安全性,14.2.1 数据完整性的基本概念 1数据的完整性 数据的完整性是指数据的正确性和相容性。(1)实体完整性(Entity Integrity)实体完整性也称为行完整性,要求表中的每一行必须是唯一的,通过索引、UNIQUE约束、PRIMARY KEY约束或IDENTITY属性可实现数据的实体完整性。(2)域完整性(Domain Integrity)域完整性也称为列完整性,是保证数据库中的数据取值的合理性。是指定一个数据集对某个列是否有效和确定是否允许为空值。(3)参照完整性(Referential Integrity)参照完整性又称为引用完整性。参照完整性保证主表中的数据与从表(被参照表)中数据的一致性。,14.2 数据库的完整性,14.2.1 数据完整性的基本概念 2约束的类型 约束(Constraint)定义关于列中允许值的规则,是强制完整性的标准机制。使用约束优先于使用触发器、规则和默认。(1)PRIMARY KEY约束 主键(PRIMARY KEY)是表中一列或多列的组合,其值能唯一地标识表中的每一行,通过它可以强制表的实体完整性。(2)CHECK约束 CHECK约束用于限制输入到一列或多列的值的范围,从逻辑表达式判断数据的有效性。(3)DEFAULT约束(4)FOREIGN KEY 约束(5)UNIQUE约束,14.2 数据库的完整性,14.2.2 实体完整性的实现 1使用T-SQL语句创建PRIMARY KEY约束或UNIQUE约束使用T-SQL语句设置PRIMARY KEY约束的语法形式如下:CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED(column_name,n)使用T-SQL语句设置UNIQUE约束的语法形式如下:CONSTRAINT constraint_name UNIQUE CLUSTERED|NONCLUSTERED(column_name,n),14.2 数据库的完整性,14.2.2 实体完整性的实现【案例14-17】创建表StudentOne,并对学号字段Student_No创建PRIMARY KEY约束,对姓名字段Student_Name定义UNIQUE约束。USE StudentManagementGOCREATE TABLE StudentOne(Student_No char(6)NOT NULL CONSTRAINT PK_StudentOne_StudentNo PRIMARY KEY,Student_Name char(8)NOT NULL CONSTRAINT UK_StudentOne_StudentName UNIQUE,Student_Sex char(2)NULL,Student_Birthday date NULL,Student_ClassNo char(6)NULL,Student_Telephone varchar(13)NULL,Student_Email varchar(15)NULL,Student_Address varchar(30)NULL),14.2 数据库的完整性,14.2.2 实体完整性的实现 2使用T-SQL语句删除PRIMARY KEY约束或UNIQUE约束删除PRIMARY KEY约束或UNIQUE约束需要使用ALTER TABLE的DROP子句。语法格式:ALTER TABLE table_name DROP CONSTRAINT constraint_name,.n【案例14-18】删除表StudentOne中创建的PRIMARY KEY约束和UNIQUE约束。在查询窗口中输入如下T-SQL语句:ALTER TABLE StudentOneDROP CONSTRAINT PK_StudentOne_StudentNo,UK_StudentOne_StudentNameGO,14.2 数据库的完整性,14.2.3 域完整性的实现 域完整性主要由用户定义的完整性组成,通常使用有效性检查强制域完整性。1CHECK约束 CHECK约束实际上是字段输入内容的验证规则,表示一个字段的输入内容必须满足CHECK约束的条件,若不满足,则数据无法正常输入。(1)使用T-SQL语句创建CHECK约束用户可以在创建表或修改表的同时定义CHECK约束。其语法形式如下:CONSTRAINT constraint_name CHECK NOT FOR REPLICATION(logical_expression),14.2 数据库的完整性,14.2.3 域完整性的实现【案例14-19】修改表StudentOne,对性别字段Student_Sex加上CHECK约束,只能包含“男”或“女”;对出生日期字段Student_Birthday加上CHECK约束,要求出生日期必须大于1985年1月1日。操作步骤如下。在SSMS中单击“新建查询”按钮新建一个查询编辑器窗口。在查询窗口中输入如下T-SQL语句:USE StudentManagementGOALTER TABLE StudentOneADD CONSTRAINT CK_Student_StudentSex CHECK(Student_Sex IN(男,女),CONSTRAINT CK_Student_StudentBirthday CHECK(Student_Birthday1985-01-01)GO,14.2 数据库的完整性,14.2.3 域完整性的实现(2)使用T-SQL语句删除CHECK约束使用ALTER TABLE语句的DROP子句可以删除CHECK约束。其语法格式如下:ALTER TABLE table_name DROP CONSTRAINT check_name【案例14-20】删除表StudentOne中出生日期字段的CHECK约束。在查询窗口中输入如下T-SQL语句:USE StudentManagementGOALTER TABLE StudentOneDROP CONSTRAINT CK_Student_StudentBirthdayGO,14.2 数据库的完整性,14.2.3 域完整性的实现 2DEFAULT约束DEFAULT约束也是强制实现域完整性的一种手段,定义DEFAULT约束需要注意:表中的每一列都可以包含一个DEFAULT定义,但每列只能有一个DEFAULT定义。DEFAULT定义不能引用表中的其他列,也不能引用其他表、视图或存储过程。不能对数据类型为timestamp的列或具有IDENTITY属性的列创建DEFAULT定义。不能对使用用户定义数据类型的列创建DEFAULT定义。(1)使用T-SQL语句创建DEFAULT约束创建DEFAULT约束的语法形式如下:CONSTRAINT constraint_nameDEFAULT constraint_expression FOR column_name,14.2 数据库的完整性,14.2.3 域完整性的实现【案例14-21】修改表StudentOne,对性别字段Student_Sex加上DEFAULT约束,默认值为“男”。操作步骤如下。在SSMS中单击“新建查询”按钮新建一个查询编辑器窗口。在查询窗口中输入如下T-SQL语句:USE StudentManagementGOALTER TABLE StudentOneADD CONSTRAINT DF_Student_StudentSex DEFAULT 男 FOR Student_SexGO,14.2 数据库的完整性,14.2.3 域完整性的实现(2)使用T-SQL语句删除DEFAULT约束使用ALTER TABLE语句的DROP子句可以删除DEFAULT约束。其语法格式如下:ALTER TABLE table_nameDROP CONSTRAINT default_name【案例14-22】删除表StudentOne中性别字段的DEFAULT约束。在查询窗口中输入如下T-SQL语句:USE StudentManagementGOALTER TABLE StudentOneDROP CONSTRAINT DF_Student_StudentSexGO,14.2 数据库的完整性,14.2.3 域完整性的实现 3规则 规则是一组使用T-SQL语句组成的条件语句,规则提供了另外一种在数据库中实现域完整性与用户定义完整性的方法。规则和CHECK约束功能类似,只不过规则可用于多个表中的列,以及用户自定义的数据类型,而CHECK约束只能用于它所限制的列。一列上只能使用一个规则,但可以使用多个CHECK约束。规则一旦定义为对象,就可以被多个表的多列所引用。(1)规则对象的定义 定义规则对象的语法格式如下:CREATE RULE schema_name.rule_name AS condition_expression,14.2 数据库的完整性,14.2.3 域完整性的实现 3规则【案例14-23】创建一个规则,并绑定到职称表Title的职称编号字段,用于限制职称编号的输入范围。操作步骤如下。在SSMS中单击“新建查询”按钮新建一个查询编辑器窗口。在查询窗口中输入如下T-SQL语句:USE StudentManagementGOCREATE RULE R_Title_TitleCodeAS range LIKE 01-4GOEXEC sp_bindrule R_TitleCode,Title.Title_Code GO,14.2 数据库的完整性,14.2.3 域完整性的实现(4)使用T-SQL语句删除规则 在删除规则对象前,首先应使用系统存储过程sp_unbindrule解除被绑定对象与规则对象之间的绑定关系,使用格式如下:sp_unbindrule objname=object_name,futureonly=futureonly_flag【案例14-24】解除规则R_TitleCode与字段的绑定关系,并删除规则对象R_TitleCode。在查询窗口中输入如下T-SQL语句:EXEC sp_unbindrule Title.Title_Code GODROP RULE R_Title_TitleCodeGO,14.2 数据库的完整性,14.2.4 参照完整性完整性的实现 1使用SSMS定义表间的参照关系【案例14-25】实现表Student与表SelectCourse之间的参照完整性。操作步骤如下。首先定义主表Student的主键。由于之前在创建表的时候已经定义表Student中的学号字段Student_No为主键,所以这里就不需要再定义主表的主键了。启动SSMS,在对象资源管理器中展开数据库StudentManagement,右键单击“数据库关系图”,在弹出的快捷菜单中选择“新建数据库关系图”菜单项。打开“添加表”对话框,选择要添加的表Student和表SelectCourse。单击“添加”按钮完成表的添加,之后单击“关闭”按钮退出对话框。,14.2 数据库的完整性,14.2.4 参照完整性完整性的实现 打开“数据库关系图设计”窗口,将鼠标指向主表的主键,并拖动到从表,即将主表Student中的学号字段Student_No拖动到从表SelectCourse中的学号字段SelectCourse_StudentNo,如图14-32所示。打开“表和列”对话框,输入关系名、主键表和列名。单击“确定”按钮,显示出“外键关系”对话框,单击“确定”按钮,完成表Student与表SelectCourse之间的参照完整性的设置。单击“保存”按钮,在打开的“选择名称”对话框中输入关系图的名称。单击“确定”按钮,在打开的“保存”对话框中单击“是”按钮,保存设置。,14.2 数据库的完整性,14.2.4 参照完整性完整性的实现2使用T-SQL语句定义表间的参照关系 前面已介绍了创建主键(PRIMARY KEY约束)及唯一键(UNIQUE约束)的方法,这里将介绍通过T-SQL命令创建外键的方法。用户可以在创建表或修改表的同时定义外键约束。语法格式如下:CONSTRAINT constraint_nameFOREIGN KEY(column_name,n)REFERENCES ref_table(ref_column,n)其中,各参数的说明如下:REFERENCES:用于指定要建立关联的表的信息。ref_table:用于指定要建立关联的表的名称。ref_column:用于指定要建立关联的表中相关列的名称。,14.2 数据库的完整性,14.2.4 参照完整性完整性的实现【案例14-26】使用T-SQL语句创建教师表Teacher、授课表TeachClass与课程表Course之间的外键约束关系。在查询窗口中输入如下T-SQL语句:ALTER TABLE TeachClassADDCONSTRAINT FK_TeachClass_Course FOREIGN KEY(TeachClass_CourseNo)REFERENCES Course(Course_No)GOALTER TABLE TeachClassADDCONSTRAINT FK_TeachClass_Teacher FOREIGN KEY(TeachClass_No)REFERENCES Teacher(Teacher_No)GO,14.2 数据库的完整性,14.3.1 基本概念1备份和恢复需求分析 数据库中的数据丢失或被破坏可能是由于以下原因:(1)计算机硬件故障 由于使用不当或产品质量等原因,计算机硬件可能会出现故障,不能使用。(2)软件故障 由于软件设计上的失误或用户使用的不当,软件系统可能会误操作数据引起数据破坏。(3)计算机病毒 计算机病毒是一种人为的故障或破坏。轻则使部分数据不正确,重则使整个数据库遭到破坏。(4)用户操作错误 由于用户有意或无意的操作也可能删除数据库中的有用的数据或加入错误的数据,这同样会造成一些潜在的故障。,14.3 数据库的备份和恢复,14.3.1 基本概念2数据库备份的基本概念 数据库备份记录了在进行备份这一操作时数据库中所有数据的状态,以便在数据库遭到破坏时能够及时地将其还原。执行备份操作必须拥有对数据库备份的权限许可,SQL Server只允许系统管理员、数据库所有者和数据库备份执行者备份数据库。(1)备份内容 数据库中数据的重要程度决定了数据恢复的必要性与重要性,也就决定了数据是否需要备份及如何备份。数据库需备份的内容可分为数据文件(又分为主要数据文件和次要数据文件)、日志文件两部分。(2)备份数据库的时机 备份数据库,不但要备份用户数据库,也要备份系统数据库。,14.3 数据库的备份和恢复,14.3.1 基本概念(3)备份数据库时限制的操作 SQL Server 2008在执行数据库备份的过程中,允许用户对数据库继续操作,但不允许用户在备份时执行下列操作:创建或删除数据库文件、创建索引或不记日志的命令。如果在系统正执行上述操作中的任何一种时试图进行备份,则备份进程不能执行。(4)备份方法 数据库备份常用的两类方法是完全备份和差异备份。完全备份每次都备份整个数据库或事务日志,差异备份则只备份自上次备份以来发生过变化的数据库的数据。差异备份也称为增量备份。SQL Server 2008中有两种基本的备份:一是只备份数据库,二是备份数据库和事务日志,它们又都可以与完全或差异备份相结合。,14.3 数据库的备份和恢复,14.3.1 基本概念3数据库恢复的基本概念 数据库恢复是指将数据库备份重新加载到系统中的过程。(1)准备工作 数据库恢复的准备工作包括系统安全性检查和备份介质验证。在进行恢复时,系统先执行安全性检查、重建数据库及其相关文件等操作,保证数据库安全地恢复,这是数据库恢复必要的准备,可以防止错误的恢复操作。(2)执行恢复数据库的操作 用户可以使用SSMS或T-SQL语句执行恢复数据库的操作。具体的恢复操作步骤将在后面章节进行详细的介绍。,14.3 数据库的备份和恢复,14.3.2 备份数据库1创建备份设备(1)创建永久备份设备 若使用磁盘设备备份,那么备份设备实际上就是磁盘文件;若使用磁带设备备份,那么备份设备实际上就是一个或多个磁带。创建备份设备有两种方法:使用SSMS或使用系统存储过程sp_addumpdevice。(2)创建临时备份设备 如果用户只要进行数据库的一次性备份或测试自动备份操作,那么就用临时备份设备。语法格式:BACKUP DATABASE database_name|database_name_var TO,n,14.3 数据库的备份和恢复,14.3.2 备份数据库2备份命令(1)备份整个数据库T-SQL语句提供了BACKUP语句执行备份操作,语法形式如下:BACKUP DATABASE database_name|database_name_var TO,.n WITH DIFFERENTIAL|,.n;:=logical_device_name|logical_device_name_var DISK|TAPE=physical_device_name|physical_device_name_var,.n:=-Backup Set Options COPY_ONLY|DESCRIPTION=text|text_variable|NAME=backup_set_name|backup_set_name_var|PASSWORD=password|password_variable|EXPIREDATE=date|date_var|RETAINDAYS=days|days_var|NO_LOG,14.3 数据库的备份和恢复,14.3.2 备份数据库【案例14-30】使用逻辑名testdevice在C盘创建一个命名的备份设备,并将数据库StudentManagement完全备份到该设备。操作步骤如下。在SSMS中单击“新建查询”按钮新建一个查询编辑器窗口。在查询窗口中输入如下T-SQL语句:USE masterGOEXEC sp_addumpdevice disk,testdevice,C:datatestdevice.bakBACKUP DATABASE StudentManagement TO testdevice 单击“执行”按钮执行该语句,完成整个数据库的备份。,14.3 数据库的备份和恢复,14.3.2 备份数据库(2)差异备份数据库 对于需频繁修改的数据库,进行差异备份可以缩短备份和恢复的时间。只有当已经执行了完全数据库备份后才能执行差异备份。在进行差异备份时,SQL Server将备份从最近的完全数据库备份后数据库发生了变化的部分。SQL Server执行差异备份时需注意:若在上次完全数据库备份后,数据库的某行被修改了,则执行差异备份只保存最后一次改动的值。为了使差异备份设备与完全数据库备份设备区分开来,应使用不同的设备名。,14.3 数据库的备份和恢复,14.3.2 备份数据库(3)备份数据库文件或文件组 当数据库非常大时,可以进行数据库文件或文件组的备份。使用数据库文件或文件组备份时,要注意以下几点:必须指定文件或文件组的逻辑名。必须执行事务日志备份,以确保恢复后的文件与数据库其他部分的一致性。应轮流备份数据库中的文件或文件组,以使数据库中的所有文件或文件组都定期得到备份。,14.3 数据库的备份和恢复,14.3.2 备份数据库(4)事务日志备份 当进行事务日志备份时,系统将事务日志中从前一次成功备份结束位置开始,到当前事务日志结尾处的内容进行备份。【案例14-33】创建一个命名的备份设备smlogbk,并备份数据库StudentManagement的事务日志。操作步骤如下。在SSMS中单击“新建查询”按钮新建一个查询编辑器窗口。在查询窗口中输入如下T-SQL语句:USE masterGOEXEC sp_addumpdevice disk,smlogbk,C:datasmlogbk.bakBACKUP LOG StudentManagement TO smlogbk,14.3 数据库的备份和恢复,14.3.2 备份数据库(4)事务日志备份 当进行事务日志备份时,系统将事务日志中从前一次成功备份结束位置开始,到当前事务日志结尾处的内容进行备份。【案例14-33】创建一个命名的备份设备smlogbk,并备份数据库StudentManagement的事务日志。操作步骤如下。在SSMS中单击“新建查询”按钮新建一个查询编辑器窗口。在查询窗口中输入如下T-SQL语句:USE masterGOEXEC sp_addumpdevice disk,smlogbk,C:datasmlogbk.bakBACKUP LOG StudentManagement TO smlogbk,14.3 数据库的备份和恢复,14.3.3 恢复数据库1恢复数据库前的准备工作 在执行恢复操作前,应当验证备份文件的有效性,确认备份中是否含有数据库所需要的数据,关闭该数据库上的所有用户,备份事务日志。2使用T-SQL语句恢复数据库数据库 T-SQL提供了RESTORE语句恢复数据库,其语法形式如下:RESTORE DATABASE database_name|database_name_var FROM,.n WITH STOP_ON_ERROR|CONTINUE_AFTER_ERROR,FILE=backup_set_file_number|backup_set_file_number,RECOVERY|NORECOVERY|STANDBY=standby_file_name|standby_file_name_var,REPLACE,RESTART,RESTRICTED_USER,STATS=percentage;,14.3 数据库的备份和恢复,14.3.3 恢复数据库【案例14-35】对数据库StudentManagement进行一次差异备份,然后使用RESTORE DATABASE语句进行数据库备份的恢复。在查询窗口中输入如下T-SQL语句:BACKUP DATABASE StudentManagement TO mydeviceWITH DIFFERENTIAL-进行数据库差异备份GOUSE master-确保不再使用数据库StudentManagementGORESTORE DATABASE StudentManagement FROM mydeviceWITH FILE=1,NORECOVERY-恢复数据库完整备份(已在SSMS中备份)RESTORE DATABASE StudentManagement FROM mydeviceWITH FILE=2,RECOVERY-恢复数据库差异备份GO,14.3 数据库的备份和恢复,【实训14-1】学籍管理系统数据库上的安全性控制。按照SQL Server的安全控制等级,首先为学籍管理数据库StudentManagement建立一个管理员级登录账户和若干个一般账户,如表14-1所示,并把它们分别映射为数据库用户,最后为数据库用户授予相应的权限。,14.4 实训学籍管理系统数据库的安全与保护,【实训14-2】学籍管理系统数据库上的完整性控制。通过主键约束、外键约束、唯一约束、CHECK约束以及规则、默认值等机制实现数据库的完整性控制。表14-2以学生表Student为例,列出了一部分具有代表性的约束。其余相关约束请读者自行完成。,14.4 实训学籍管理系统数据库的安全与保护,