SQL Server 中的用户类型
在远程连接Sql Server的时候,总会在登录的时候出现一系列错误,远远不如Mysql简便易用。并且为其中的诸多概念所缠绕,后来研究了一下,大概清楚了。简单而言,想要登录一台数据库服务器(DBMS)上的数据库,需要经过好几层验证。依次如下:
操作系统层级
windows 服务器的管理,可以使用域,也可不用。如果使用,登录者在不同计算机登录之后,所看到的内容都是一样的。若不是用,则一个登录帐户与一台计算机绑定。
Sql Server中的登录分两种,一种是使用sql server身份验证(比如默认的管理员帐户sa),一种是使用Windows身份验证(操作系统可能有多个登录帐户,需要确定是使用的哪一个或哪几个本地帐户)。如果使用SqlServer帐户验证,无论用什么本地帐户登录,都是可以连接上DBMS的;但是如果是用本地帐户验证,则只有被允许的本地帐户才可以登录。被允许的本地帐户在DBMS的 安全性->登录名中显示。
DBMS层级
需要注意的是,无论对于Sql Server身份还是windows身份,都只是针对的DBMS而没有涉及DBMS中的数据库。这两种身份都被微软成为“登录名”,用于数据库服务器层级的管理,它存在于数据库服务器中,如果备份了某个数据库,这两种登录名是不会被一同备份的。对于登录名,可以在安全性->登录名中设置它的角色,在 安全性->服务器角色 中。默认的服务器角色有:
bulkadmin, dbcreator, diskadmin, processadmin, public, securityadmin, serveradmin, setupadmin, sysadmin.
数据库层级
若希望访问真正的数据库(database),需要为登录名分配一个用户名。在登录名的属性中可以设置用户映射,也可以在 XX数据库->安全性->用户中 设置。一个登录名可以设置多个用户。用户与数据库之间则存在多对多的关系。用户与数据库之间的权限控制可以通过 角色与架构来设置。角色指定了用户登录进DBMS之后所具有的权限;而架构则是为了解决不同的用户在同一个数据库中添加同名表 而生。默认比如用户u1与用户u2都用对数据库表DB的写权限,那么他们各自都可以创建同名的表,系统在存储表的两者的表的时候,会在前面加上用户所属的架构。用户与架构是多对多的关系。
所以在访问sqlserver的时候,验证会经过如下几级:数据库服务器(登录名-角色:windows验证或sqlserver验证),数据库(用户-角色),数据库表架构。
发表评论