这是我们学习数据库时候的一个课下作业 整理了一下 希望我敬爱的西杰老师的学生不会看到
平时学习对于表的操作,触发器,存储过程涉及较多
角色权限因为还是学生很少涉及
代码中的不足之处,欢迎各位评论贴出来,我不怕丢人,谢谢各位大佬
--要求通过 SQL Server Management Studio和SQL的数据控制功能,设置和管理数据操作权限。
--1、创建一个系统登陆账号tlog,并允许该账号访问studentmanager数据库(映射成studentmanager数据库的用户tlog)
--创建登录名
create login tlog
with password='test',
default_database=studentmanager,
default_language = [简体中文],
check_expiration=off,
check_policy=off
--创建用户名
create user tloguser
for login tlog with
default_schema= dbo
--2、设计安全机制使得用户“tlog”只能查询“电气与信息工程系”的学生的基本信息。
create view stu_dep_dianqi
as
select * from student
where c_id in (select c_id from class where dep_id in( select dep_id from department where dep_name='电气与信息工程系'))
select * from stu_dep_dianqi
grant select on stu_dep_dianqi
to tloguser
--3、设计安全机制使得用户“tolg”只能在上午8:00和下午5:00之间查看学生的学号、姓名、课程名、成绩。
create view v_stuscore(学号,姓名,课程名,成绩)
AS
select student.s_id,s_name,course_name,result
from student,s_c,course
where student.s_id=s_c.s_id and s_c.course_id=course.course_id
and datepart(Hh,getdate()) between 8 and 17
grant select
on v_stuscore
to tloguser
--4、设计角色“admin”,可以查看学生的学号、姓名、课程名、成绩,并将数据库用户tlog添加到该数据库角色中。
exec sp_addrole 'admin'
grant select
on v_stuscore
to admin
exec sp_addrolemember 'admin', 'tloguser'--用户名为tloguser
--5、使用SQL语句检验用户tlog所获得的最终权限。
exec sp_helprotect NULL, 'tloguser'
--6、收回tlog用户的权限,并使用SQL语句检验用户tlog是否丧失了之前所获得的权限。
revoke select
on department
from tloguser
revoke select
on v_stuscore
from tloguser
exec sp_helprotect NULL, 'tloguser'