I. 登陆名与用户名html
登陆名: 访问数据库服务器的帐户。登陆名能够登陆到服务器,但不能直接访问数据库内容。数据库链接串中的用户名应配置为登陆名。每一个登陆名的定义存放在master数据库的syslogins表中。sql
用户: 访问数据库内容的帐户。一个登陆名能够映射数据库中的一个用户(且仅能映射一个),从而使登陆名具备了访问数据库的权限。用户定义信息存放在每一个数据库的sysusers表中。数据库
SQLSERVER把登陆名与用户的关系称为映射。用登陆名登陆SQLSERVER后,在访问各个数据库时,SQLSERVER会自动查询此数据库中是否存在与此登陆名映射的用户名,若存在就使用此用户的权限访问此数据库,若不存在就是用guest用户访问此数据库。服务器
能够把一个数据库服务器理解为一个大楼,而每一个数据库就是一个房间。因此登陆名就是进入大楼的钥匙,而用户是进入房间的钥匙。有人会质疑,为何要设两把钥匙,而不是直接分配房间的钥匙。有一个不错的解释是:“大楼的钥匙能够在大楼内创建房间/删除房间,以及配置整个大楼的安保等功能。而用户只能对本身的房间进行收拾。”架构
参见:
http://www.cnblogs.com/ibrahim/archive/2010/06/21/sqlserver_loginname_username.html
http://bbs.csdn.net/topics/360239408?page=1sqlserver
II. 角色与架构.net
服务器角色: 对一组服务器操做权限的定义。一个登陆名具备某一服务器角色就意味着此登陆名具备此角色所定义的操做权限。server
数据库角色: 对一组数据库操做权限的定义。一个用户具备某一数据库角色就意味着此用户具备此角色所定义的操做权限。htm
架构: 指数据库对象的容器,至关于数据库对象的命名空间。用户经过架构访问数据库对象。(在访问数据库对象时若是不加构架限制,则缺省设为“dbo”。)对象
一个数据库角色或用户拥有某一架构意味着此角色或用户有权访问此架构下的全部对象。系统预约义的每一个数据库角色(除public)都拥有一个同名的架构,且此拥有关系不能修改。
参见:
http://www.cnblogs.com/50614090/archive/2010/12/16/1908636.html
参见一篇讨论较充分的文章(后面有一些重要的脚本命令说明):
http://blog.csdn.net/yu0089/article/details/9195295