MS SQL的几个模糊概念:登录、用户,登录帐号、用户帐号

[复制链接]
查看11 | 回复2 | 2015-12-14 14:47:54 | 显示全部楼层 |阅读模式
登录和用户这两个概念很容易混淆,我们总是可以这样理解:用户使用用户帐号进行系统登录。其实这样理解是错误的。我在连接到SQLSERVER的时候,如果不是使用WINDOWS验证,就需要输入一个帐号和密码,请注意:这个时候输入的帐号是登录帐号,而不是用户帐号。
在创建一个登录的时候,必须指定一个默认的数据库。一旦创建了一个登录,便在这个默认的数据库里面创建了一个与登录名同名的用户帐号。登录就是通过这个用户帐号来访问数据库对象的,也就是说,如果在一个SQLSERVER服务器里面没有从属与这个登录的帐号,则这个登录可以连接到SQLSERVER服务器,但是不能访问任何数据库对象(除非这个数据库设定了GUEST用户,即便这样,这个登录也是通过GUEST用户来访问数据库对象的)。
我们可以试着梳理一下从连接SQLSERVER到访问数据库对象的流程(只针对非WINDOWS验证):
使用登录帐号获取SQLSERVER的认可,从而连接到SQLSERVER服务器上,这个时候,登录完成了自己的使命(从连接意义上讲,登录(登录帐号)只是与SQLSERVER服务器打交道)。这个时候SQLSERVER内部完成了从登录帐号到用户帐号的映射,也就是说,接下来对数据库对象的操作是通过用户帐号而不是登录帐号来完成的。
一个用户只拥有自己的帐号,而没有用户密码,但是他必须要被指定从属于某个登录


登录是相对于服务器而言,一个登录属于整个服务器;用户是相对于数据库而言,一个用户属于某个数据库
从服务器与数据库的关系可以导出登录与用户之间的关系:
一个登录可以拥有很多的用户,这些用户分属不同的数据库
同一个数据库里面只能有一个登录的用户,既不能在同一个数据库里面创建属于同一个登录的两个用户。
回复

使用道具 举报

千问 | 2015-12-14 14:47:54 | 显示全部楼层
好绕啊~
回复

使用道具 举报

千问 | 2015-12-14 14:47:54 | 显示全部楼层
本帖最后由 interstellar 于 2013-4-23 14:07 编辑
正因为这个原因,如果设计非常复杂的权限管理,当发生数据库迁移的时候就比较悲剧……
所以2012里出现了一种“Contained Database”包含数据库。
**************************************
不小心跟在后面挖了一条千年古尸……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行