sql server 中 login, user, role, application role 之间的区别以及联系

以下是原理部分  不喜可直接跳到分割线处结论

 

login

 
登录名, 指登陆数据库时所使用的账户名
 
没指定权限的登录名除了登陆 sql 服务器以外  没有任何权限  即 无法对 sql 服务器内任何数据库进行任何操作 
 
每一个登录名的定义都存放在 master 数据库中的 sys.sql_logins 表中
 
user
 

用户名   是在数据库中进行操作的实体

用户名是登录名在数据库中的授权映射  登陆名只有在数据库中具有用户名映射  才能对数据库进行操作

 
每一个用户名的定义都存放在所属数据库的 sysusers 表中
 
role
 
角色   数据库的中定义的一些权限域组(用户组)
 
角色是服务器定义的一些具有指定权限的用户组  当一个登录名隶属于一个角色时  自动获得该角色所有权限   以及该用户在所有数据库下的用户名映射
 
application role
 
应用程序角色  特殊的数据库角色
与一般的数据库角色不一样  应用程序角色是专门为应用设计的权限域(用户组)  默认情况下 应用程序角色不包括任何用户  而且应用程序角色需要密码激活  一旦激活  用户会暂时失去所有原有权限   转而使用  应用程序角色所赋予的权限
 
--------------------------------分割线-----------------------------------------------------
 
一般来说可以这样理解
整个数据库服务器是一栋大厦             数据库就是这座大厦内的一个个小房间
登录名是大厦大门的钥匙                  有了登录名这把钥匙才能进入大厦
用户名是大厦内房间的钥匙                没有用户名就只能进入大厦但是不能进入房间
角色就是若干房间的钥匙集合             这串钥匙是分配的  不可主动获取
应用程序角色也是若干房间的钥匙集合  这串钥匙拥有密码就可主动获取  但取得的同时要放弃所有已拥有的房间钥匙
 
数据库服务器这座大厦  以及数据库这些小房间  都是可以同时有多条钥匙的
也就是说  一个数据库服务器可以有多个登陆名  一个数据库也可以有多个用户名
 
不同的登录名可以使用相同的钥匙  一个登录名可以拥有多个房间的钥匙   但每个房间只可以拥有一把钥匙
也就是说 
一个用户名可以同时映射多个登陆名   但一个登陆名在一个数据库内只能拥有一个用户名
 
我们常用的命令使用的都是登陆名  用户名对于一般的使用来说来说几乎是透明的  不可见的
posted on 2014-07-12 21:00  yl1993  阅读(902)  评论(0)    收藏  举报