本文解决下面问题:
1. 创建一个架构“class”,“class”架构下有两张表student和teacher。
2. 创建4个用户,分别是:stu1,stu2,tea1,tea2。其中stu1和tea1用windows身份登录,stu2和tea2用SQL 身份验证登录。
3. 创建两个角色:student、teacher。student拥有查看student表的权限,teacher拥有查看teacher表的权限。
4. 将student角色授予给stu1和stu2用户,teacher角色授予给tea1和tea2用户。
建议先看一下登录名、角色、用户的关系:http://wenku.baidu.com/view/75a1b746a8956bec0975e358.html
1 创建架构(schema)
1 use [S-T]
2 go
3
4 create schema class
5 go
和表格
1 use [S-T]
2 go
3
4 create table class.student(
5 Sno char(10),
6 Sname char(10),
7 Ssex char(4),
8 Sdept char(10)
9 );
10 go
11
12 create table class.teacher(
13 Tno char(10),
14 Tname char(10),
15 Tsex char(4),
16 Tdept char(10),
17 Job char(10),
18 Sal smallint
19 );
20 go
21
这是执行上述语句后的情况
2-1 接下来要建新的登录名
登录名有两种 一个是Windows 另一个事Sql 验证的 前者的安全性比较好
创建Windows验证的有一个重要的前提:这个登录名必须在你的电脑里存在
所以要创建一个名为stu1的Windows验证的登录名必须先现在电脑上创建一个名为stu1的账号(从控制面板那边建)
假设已经有stu1的账号了 运行下面的代码:
1 use master
2 go
3
4 create login [XIAOMENGGE\stu1] from windows
5 with default_database= "S-T"
6 go
运行完后你可以在安全性的登录名中发现多了一个XIANGMENGGE\stu1的登录名(前半部分是计算机的名称,后半部分是用户名)
tea1的建立方法同上。
接下来我们建立Sql验证的用户名stu2和tea2
1 use master
2 go
3
4 create login stu2
5 with password ='123456',
6 default_database = "S-T"
7 go
同样可以在安全性\登录名那里看到多了一个stu2的用户名
2-2 下面验证一下我们是否可以使用这些登录名
首先先断开连接(如果原来有连接的话)
重新登录(随便哪一个原有的登录名)
执行下面代码
1 use master
2 execute as login='XIAOMENGGE\stu1'
3 go
4
5 DECLARE @sys_usr char(30);
6 SET @sys_usr = SYSTEM_USER;
7 SELECT @sys_usr;
8 GO
这段代码的上半部分是吧登录名换成stu1 下部分是输出登录名
但是这事实上是没什么用的, 这时的XIAOMENGGE\stu1是无法对除了master的其他数据库进行操作的
(你断开连接再重新连接,选用Windows验证时登陆名只有一个,就是你当前PC登陆的账号)
所以如果我们要用stu1进行登陆,应该注销电脑,并切换账户到stu1
然而相对Windows验证,Sql验证的登录名登陆就比较简单了
断开连接,选Sql验证,输入登录名和密码即可
(如果是该登陆名的第一次登陆,要先运行下列代码)
1 grant control server to MyLogin
2 go