本文解决下面问题:

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



sql server 系统账户 sql server 2008账户名_sql server 系统账户

这是执行上述语句后的情况

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