SQL s erv er2005 服务器登录名、角色、数据库用户、角色、架构的关系 、SQLServer| 2011-04-26 17:41:17 阅读 61 评论 0 字号:大中小订阅 MS SQL2005 对 2000 进行了很大的改进,而用户关系这部分也变得相当复杂了,很多朋友都对此一知半解!下面,我将把我应用中总结的和大家分享下,先从概念入手,希望对不理解的朋友有点提示。 今天我们要说的包括服务器登录名Server Login,服务器角色 Server Role,数据库用户 DB User,数据库架构 DB Schema,数据库角色 DB Role 。以上几个名词应该从服务器与数据库来区分,服务器包含一到多个数据库,其中: 服务器登录名,指有权限登录到某服务器的用户; 服务器角色,指一组固定的服务器用户,默认有 9 组; 登录名一定属于某些角色,默认为 public 服务器角色不容许更改 登录后也不一定有权限操作数据库 数据库用户,指有权限能操作数据库的用户; 数据库角色,指一组固定的有某些权限的数据库角色; 数据库架构,指数据库对象的容器; 数据库用户对应于服务器登录名以便登录者可以操作数据库 数据库角色可以添加,可以定制不同权限 数据库架构,类似于数据库对象的命名空间,用户通过架构访问数据库对象 而通过下图可以让这些概念清晰一些: 即: 1. 服务器登录名属于某组服务器角色; 2. 服务器登录名需要于数据库的用户映射后才拥有操作数据库的权限 3. 数据库用户属于某组数据库角色以获取操作数据库的权限 4. 数据库角色拥有对应的数据库架构,数据库用户可以通过角色直接拥有架构 5. 数据库用户有默认架构,写SQL 语句可以直接以“对象名”访问 6. 非默认架构则要以“架构名.对象名”访问 因此,新建一个非SA 账户并建立数据库的过程可以如下: 1、新建登录名 Lo gin 1 2、新建数据库 DB1 3、新建 DB1 的架构 Schem a1 4、新建 BD1 的用户 User1,登录名对应 Login1,默认架构选择 Schema1,角色选择 db_ow ner 5、在登录名 Login1 的属性窗口里选择“用户映射”,勾选 DB1,在用户里填写 User1,默认架构选择"Schema1" 6、至此,新建表名会是 Schem a1.Table1,其他对象也如此 7、当然还可以新建其他架构的对象 Schema2,只有 Us er1 拥有该架构,一样可以访问,如 Schema2.Table2 值得注意的是,当为登录映射数据库用户的时候,多个数据库可以有相同名称的用户,而单独为某个数据库新建的用户,如 Us er1,则在其他数据库里不允许同名。