数据库的恢复及权限控制数据库实验6文档格式.docx
《数据库的恢复及权限控制数据库实验6文档格式.docx》由会员分享,可在线阅读,更多相关《数据库的恢复及权限控制数据库实验6文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
3)掌握利用系统存储过程进行数据库登录名、用户创建的方法;
4)掌握利用SQL进行数据对象权限授予与回收的方法。
2实验平台:
操作系统:
Windowsxp。
实验环境:
SQLServer2000以上版本。
3实验内容与步骤
利用实验一创建的sch_id数据库完成下列实验内容。
1.利用企业管理器对sch_id数据库进行完全备份。
完全备份操作过程步骤截图:
USEsch_id
GO
BACKUPDATABASEsch_id
TODISK='
C:
\myprogramfiles\SQLServerBackups\sch_id.Bak'
WITHFORMAT,
MEDIANAME='
C_SQLServerBackups'
MEDIADESCRIPTION='
数据库sch_id完整备份'
NAME='
FullBackupofsch_id'
2.向D表中插入2条记录,再利用企业管理器对sch_id数据库进行差异备份。
D表查询结果截图:
SELECT*FROMD
INSERTINTODVALUES('
D7'
'
新闻'
),('
D8'
法学'
)
差异备份操作过程步骤截图:
WITHDIFFERENTIAL
3.利用企业管理器和完全备份文件对sch_id数据进行还原。
完全备份文件还原操作过程步骤截图:
USEmaster;
--Makesurethedatabaseisusingthesimplerecoverymodel.
ALTERDATABASEsch_idSETRECOVERYSIMPLE;
GO
--Restorethefulldatabasebackup(frombackupset1).
RESTOREDATABASEsch_id
FROMDISK='
WITHFILE=1,NORECOVERY;
--解决数据库一直处于正在还原状态:
RESTOREDATABASEsch_idWITHRECOVERY
还原后D表查询结果截图:
4.删除D表中的一条记录,再利用企业管理器和差异备份文件对sch_id数据进行还原。
删除记录后D表查询结果截图:
DELETEFROMDWHEREdno='
D5'
差异备份文件还原操作过程步骤截图:
ALTERDATABASEsch_id
SETOFFLINEWITHROLLBACKIMMEDIATE
USEmaster
RESTOREDATABASEsch_id
WITHFILE=1,NORECOVERY,REPLACE;
WITHFILE=2,RECOVERY;
5.创建数据库管理系统登录名loginid,其中id为本人学号后两位,密码为学号后三位。
创建数据库管理系统登录名testid,其中id为本人学号后两位,密码为学号后三位。
(提示:
使用系统存储过程sp_addlogin)
创建登录语句:
CREATELOGINlogin13
WITHPASSWORD='
213'
;
CREATELOGINtest13
数据库系统登录名列表截图:
SELECT*FROMsyslogins
6.创建sch_id数据库的用户userid和tigerid,其中id为本人学号后两位,这两个用户分别关联第5题中的两个登录。
使用系统存储过程sp_adduser)
用户创建语句:
USEsch_id;
CREATEUSERuser13FORLOGINlogin13;
CREATEUSERtiger13FORLOGINtest13;
Sch_id数据库中用户列表截图:
SELECT*FROMsys.sysusers
Userid用户登录数据库主要过程截图:
利用userid用户查询Sch_id数据库中的学生表,操作结果截图:
7.利用sa登录,为userid用户授予查询学生表的权限。
授予权限的语句:
USE[master]
/*Forsecurityreasonstheloginiscreateddisabledandwitharandompassword.*/
/******Object:
Login[sa]ScriptDate:
2016/11/2814:
08:
12******/
CREATELOGIN[sa]WITHPASSWORD=N'
ErhYbjE18WueseYK2SYUFXVUrIHRUqE4ftqxSm8/iN4='
DEFAULT_DATABASE=[master],DEFAULT_LANGUAGE=[简体中文],CHECK_EXPIRATION=OFF,CHECK_POLICY=ON
ALTERLOGIN[sa]DISABLE
ALTERSERVERROLE[sysadmin]ADDMEMBER[sa]
GRANTSELECTONSTOuser13
userid用户将学生表查询权限授予tigerid用户的操作结果截图:
8.利用sa登录,为userid用户授予添加学生表元组的权限,并允许userid用户传播该权限,且userid用户将该权限授予了tigerid用户。
加withgrantoption)
GRANTSELECTONSTOuser13WITHGRANTOPTION
GRANTSELECTONSTOtiger13
利用userid用户向Sch_id数据库中的学生表添加一位学生的元组,操作结果截图:
userid用户将学生表插入权限授予tigerid用户的操作结果截图:
利用tigerid用户向Sch_id数据库中的学生表添加一位学生的元组,操作结果截图:
9.利用sa登录,收回userid用户对学生表插入数据的权限。
加cascade)
回收权限的语句:
REVOKEINSERTONSTOuser13CASCADE
4深入思考与讨论
1)请按自己的理解,说明一下SQLServer中权限是如何级联回收的。
若收回用户A对表T的插入权限,则由A授予其他用户的该权限也被收回。
就好比一条河流,如果从中游修了一座大坝,下游河水也会断流。
2)第9题中,如果sa登录后,在回收userid用户对学生表插入数据的权限之前,先为tigerid用户授予了对学生表插入数据的权限,然后再回收userid用户对学生表插入数据的权限,此时tigerid用户是否还能向学生表插入数据?
请结合自己的理解,解释原因。
GRANTINSERTONSTOuser13WITHGRANTOPTION
GRANTINSERTONSTOtiger13WITHGRANTOPTION
REVOKEINSERTONSTOtiger13
INSERTINTOSVALUES('
S31'
刘晶晶'
女'
21,'
D1'
8)
不能。
若sa收回用户user13对表S的插入权限,则由user13授予其他用户的该权限也被收回。
就好比一条河流,如果从上游修了一座大坝,下游河水也会断流。
3)第9题中,如果sa登录后,不回收userid用户对学生表插入数据的权限,而是回收tigerid用户对学生表插入数据的权限,此时tigerid用户是否还能向学生表插入数据?
能。
由图可知,tigerid用户依然能向学生表插入数据。