数据库原理及应用实验答案 8-9
目 录
实验八 数据库角色和权限 ....................................................................................................3
实验九 数据库备份和恢复 ....................................................................................................7
实验八 数据库角色和权限
【实验目的】
1、 能够建立 SQL Server 的数据库用户
2、 掌握 SQL Server 的数据库角色,能够定义角色
3、 掌握 SQL Server 的数据库权限,能够分配权限
【实验性质】 验证性
【实验内容】
1、理解数据库角色和权限
(1) 在 SQL Server Management Studio 中创建三个登录帐户:log1、log2、log3。
(2) 利用 sa 用户或者 windows 默认用户建立的 LoanDB 数据库,用 log1 登录,能否操
作 LoanDB 数据库?为什么?
(不能,没有映射数据库 LoanDB)
(3) 将 log1、log2、log3 映射为 LoanDB 数据库中的用户。
(4) 用 log1 登录,能否操作 LoanDB 数据库?为什么?
(可以)
(5) 授予 log1、log2、log3 具有对 BankT、LET、LoanT 三张表的查询权。
grant select on BankT to log1,log2,log3
grant select on LET to log1,log2,log3
grant select on LoanT to log1,log2,log3
(6) 分别用 log1、log2、log3 登录,对上述三张表执行查询。
(7) 授予 log1 具有对 BankT 表的插入、删除权限。
grant insert,delete on BankT to log1
(8) 用 log2 登录,对 BankT 表插入一行记录,会出现什么情况?
(拒绝)
(9) 用 log1 登录,对 BankT 表插入一行记录,会出现什么情况?
(成功)
(10) 在 LoanDB 数据库中建立用户角色:role1,并将 log1、log2 添加到此角色中。
create role role1
exec sp_addrolemember 'role1' , 'log1'
exec sp_addrolemember 'role1' , 'log2'
(11) 如果希望 log2 具有 LoanDB 数据库中的全部数据的查询权,比较好的实现方法是什
么?
grant select to log2
(或者)grant select to role1
(12) 如果拒绝 role1 查询 BankT 表,则 log1、log2、log3 是否有权查询 BankT 表?为什
么?
要看有没有单独给 log1、log2、log3 显式授权
Revoke select on BankT from role1
(或者)deny select on BankT to role1
2、请完成下题
新建一个数据库 TGDB,然后在 SQL Server 中创建“SQL Server 身份验证”模式的登录帐号:
TG_User,其中账户密码为空,默认数据库为 Master。并完成如下操作:
1.让 TG_User 成为 TGDB 数据库的合法用户。
use TGDB
go
Create user TG_User for login TG_User with default_schema=dbo
或者
2.在 TGDB 数据库中建用户自定义角色:MyRole,让 TG_User 成为 MyRole 角色中的成员。
use TGDB
go
Create role MyRole
go
exec sp_addrolemember 'MyRole' , 'TG_User'
3.用较好的方法授予 MyRole 在 TGDB 数据库中具有所有用户表的查询权。
use TGDB
go
Grant select to MyRole
实验九 数据库备份和恢复
【实验目的】
1、 能够进行 SQL Server 的数据库备份
2、 能够将 SQL Server 的数据库备份的数据恢复
【实验性质】 验证性
【实验内容】
1. 创建永久性备份设备:backup1,backup2,两个备份设备均存放在默认路径下。
2. 按顺序完成下列备份操作:
(1) 将 LoanDB 数据库完全备份到 backup1 上;
(2) 对 LoanDB 数据库中的贷款表中的数据进行一些修改,然后将 LoanDB 数据库差异
备份到 backup2 上;
use LoanDB
go
update
Bno='B1100'
BankT
set
Bname=' 工 商 银 行 四 川 分 行 '
where