1、数据库基础与实践实验报告实验六 数据库的恢复及权限控制班级:惠普测试 142学号:1408090213姓名:闫伟明日期:2016-11-151 实验目的:1) 掌握企业管理器进行数据库完全和差异备份的方法;2) 掌握企业管理器进行数据库还原的方法;3) 掌握利用系统存储过程进行数据库登录名、用户创建的方法;4) 掌握利用 SQL 进行数据对象权限授予与回收的方法。2 实验平台:操作系统:Windows xp。实验环境:SQL Server 2000 以上版本。3 实验内容与步骤利用实验一创建的 sch_id 数据库完成下列实验内容。1. 利用企业管理器对 sch_id 数据库进行完全备份。完全
2、备份操作过程步骤截图:USE sch_idGOBACKUP DATABASE sch_idTO DISK=C:myprogramfilesSQLServerBackupssch_id.BakWITH FORMAT,MEDIANAME=C_SQLServerBackups,MEDIADESCRIPTION=数据库sch_id完整备份,NAME=Full Backup of sch_idGO2. 向 D 表中插入 2 条记录,再利用企业管理器对 sch_id 数据库进行差异备份。D 表查询结果截图:SELECT * FROM DINSERT INTO D VALUES(D7,新闻),(D8,法学)
3、SELECT * FROM D差异备份操作过程步骤截图:BACKUP DATABASE sch_idTO DISK=C:myprogramfilesSQLServerBackupssch_id.BakWITH DIFFERENTIALGO3. 利用企业管理器和完全备份文件对 sch_id 数据进行还原。完全备份文件还原操作过程步骤截图:USE master; -Make sure the database is using the simple recovery model. ALTER DATABASE sch_id SET RECOVERY SIMPLE; GO -Restore the
4、full database backup (from backup set 1). RESTORE DATABASE sch_id FROM DISK = C:myprogramfilesSQLServerBackupssch_id.Bak WITH FILE=1, NORECOVERY; GO-解决数据库一直处于正在还原状态: RESTORE DATABASE sch_id WITH RECOVERYGO还原后 D 表查询结果截图:4. 删除 D 表中的一条记录,再利用企业管理器和差异备份文件对 sch_id 数据进行还原。删除记录后 D 表查询结果截图:SELECT * FROM DDEL
5、ETE FROM D WHERE dno=D5SELECT * FROM D差异备份文件还原操作过程步骤截图:ALTER DATABASE sch_id SET OFFLINE WITH ROLLBACK IMMEDIATEUSE masterGORESTORE DATABASE sch_idFROM DISK = C:myprogramfilesSQLServerBackupssch_id.Bak WITH FILE=1,NORECOVERY,REPLACE;RESTORE DATABASE sch_id FROM DISK = C:myprogramfilesSQLServerBackup
6、ssch_id.Bak WITH FILE=2, RECOVERY; GO USE sch_idGO还原后 D 表查询结果截图:5. 创建数据库管理系统登录名 loginid,其中 id 为本人学号后两位,密码为学号后三位。创建数据库管理系统登录名 testid,其中 id 为本人学号后两位,密码为学号后三位。(提示:使用系统存储过程 sp_addlogin)创建登录语句:CREATE LOGIN login13WITH PASSWORD=213;CREATE LOGIN test13WITH PASSWORD=213; 数据库系统登录名列表截图:SELECT * FROM syslogins
7、6. 创建 sch_id 数据库的用户 userid 和 tigerid,其中 id 为本人学号后两位,这两个用户分别关联第5 题中的两个登录。(提示:使用系统存储过程 sp_adduser)用户创建语句:USE sch_id; GO CREATE USER user13 FOR LOGIN login13;CREATE USER tiger13 FOR LOGIN test13; GO Sch_id 数据库中用户列表截图:SELECT * FROM sys.sysusersUserid 用户登录数据库主要过程截图:利用 userid 用户查询 Sch_id 数据库中的学生表,操作结果截图:7
8、. 利用 sa 登录,为 userid 用户授予查询学生表的权限。授予权限的语句:USE masterGO/* For security reasons the login is created disabled and with a random password. */* Object: Login sa Script Date: 2016/11/28 14:08:12 */CREATE LOGIN sa WITH PASSWORD=NErhYbjE18WueseYK2SYUFXVUrIHRUqE4ftqxSm8/iN4=, DEFAULT_DATABASE=master, DEFAULT
9、_LANGUAGE=简体中文, CHECK_EXPIRATION=OFF, CHECK_POLICY=ONGOALTER LOGIN sa DISABLEGOALTER SERVER ROLE sysadmin ADD MEMBER saGOGRANT SELECT ON S TO user13利用 userid 用户查询 Sch_id 数据库中的学生表,操作结果截图:userid 用户将学生表查询权限授予 tigerid 用户的操作结果截图:8. 利用 sa 登录,为 userid 用户授予添加学生表元组的权限,并允许 userid 用户传播该权限,且userid 用户将该权限授予了 tig
10、erid 用户。(提示:加 with grant option)授予权限的语句:GRANT SELECT ON S TO user13 WITH GRANT OPTIONGRANT SELECT ON S TO tiger13利用 userid 用户向 Sch_id 数据库中的学生表添加一位学生的元组,操作结果截图:userid 用户将学生表插入权限授予 tigerid 用户的操作结果截图:利用 tigerid 用户向 Sch_id 数据库中的学生表添加一位学生的元组,操作结果截图:9. 利用 sa 登录,收回 userid 用户对学生表插入数据的权限。(提示:加 cascade)回收权限的语
11、句:REVOKE INSERT ON S TO user13 CASCADE利用 userid 用户向 Sch_id 数据库中的学生表添加一位学生的元组,操作结果截图:利用 tigerid 用户向 Sch_id 数据库中的学生表添加一位学生的元组,操作结果截图:4 深入思考与讨论1) 请按自己的理解,说明一下 SQL Server 中权限是如何级联回收的。若收回用户 A 对表 T 的插入权限,则由 A 授予其他用户的该权限也被收回。就好比一条河流,如果从中游修了一座大坝,下游河水也会断流。2) 第 9 题中,如果 sa 登录后,在回收 userid 用户对学生表插入数据的权限之前,先为 tig
12、erid 用户授予了对学生表插入数据的权限,然后再回收 userid 用户对学生表插入数据的权限,此时 tigerid 用户是否还能向学生表插入数据?请结合自己的理解,解释原因。GRANT INSERT ON S TO user13 WITH GRANT OPTIONGRANT INSERT ON S TO tiger13 WITH GRANT OPTION REVOKE INSERT ON S TO tiger13INSERT INTO S VALUES(S31,刘晶晶,女,21,D1,8)不能。若 sa 收回用户 user13 对表 S 的插入权限,则由 user13 授予其他用户的该权限也被收回。就好比一条河流,如果从上游修了一座大坝,下游河水也会断流。3) 第 9 题中,如果 sa 登录后,不回收 userid 用户对学生表插入数据的权限,而是回收 tigerid 用户对学生表插入数据的权限,此时 tigerid 用户是否还能向学生表插入数据?请结合自己的理解,解释原因。能。由图可知,tigerid 用户依然能向学生表插入数据。