摘录自:《sql server 7关系数据库系统管理与开发》 一段话
角色和用户都保存在每个数据库的系统表中。系统表s y s u s e r s有这样的列:s u i d、u i d、g i d
和n a m e。对用户来说一条典型的记录包括: s u i d是用户在s y s l o g i n s系统表中对应的值, u i d是
用户在数据库中的用户标识, g i d用来表示组。实际上g i d将被写到s y s u s e r表的u i d字段上。对
角色的定义就是在s y s u s e r表中g i d与u i d相等的行。对p u b l i c角色来说就是g i d和u i d都等于0。用
户自定义数据库角色的值从uid = 16384开始,所以可以非常容易地通过u i d来确定表中的记录
是表示用户的还是角色的。下面展现的是一个有关角色和用户在表中信息的例子:
s u i d u i d g i d n a m e
---------------- -------------------- --------------------- -------------
-16 384 16 384 1 6 3 8 4 R o l e 1
- 2 0 0 p u b l i c
11 1 0 d b o
1 3 3 16 384 U s e r 2
在这个例子中,可以看到有两个角色, R o l e 1和p u b l i c,因为它们的u i d和g i d相等。d b o的
u i d的值将永远为1,而且它的g i d的值为0,这表明d b o属于p u b l i c角色。另外根据U s e r 2用户g i d
的值可以断定它是组R o l e 1的成员。所有被定义过的组的s u i d都被赋成负数。这些字段的类型
是整形( i n t ),取值范围为4亿。如果您的系统支持不超过2亿个用户,使用负数不会对您的系
统造成影响。
当一个用户被增加到数据库中时,在数据库的s y s u s e r s表中会加入一条新的记录。s y s u s e r s
表中包含的s u i d用来连接到s y s l o g i n s表;u i d是用户的I D;g i d是组的标识; n a m e是用户的名
字。关于组的问题已经在前面的’用户分组’小节中进行了讨论。
图1 2 - 1 2总结了整个登录过程。
图12-12 登录验证过程
下载
客户连接请求
认证模式
SQL Server
登录标识?
登录标识和口
令都正确?
有效的NT用户
帐户?
Windows NT 认证模式混合认证模式
SQL Server拒绝用户连接
SQL Server接受用户连接
N
Y
Y Y
N N