sql_server用户名和登录名学习笔记

转载来自于:http://ce.sysu.edu.cn/hope/Item.aspx?id=80714

作者:李华安 来源:本站原创 发布时间:2012年06月25日 点击数: 263

              用户名   一个或多个登录对象在数据库中的映射,可以对用户对象进行授权,以便为登录对象提供对数据库的访问权限。用户定义信息存放在每个数据库的sysusers表中。

            登录名   服务器方的一个实体,使用一个登录名只能进入服务器,但是不能让用户访问服务器中的数据库资源。每个登录名的定义存放在master数据库的syslogins表中。  

       一个登录名可以被授权访问多个数据库,但一个登录名在每个数据库中只能映射一次。即一个登录可对应多个用户,一个用户也可以被多个登录使用。好比SQLSERVER就象一栋大楼,里面的每个房间都是一个数据库.登录名只是进入大楼的钥匙,而用户名则是进入房间的钥匙.一个登录名可以有多个房间的钥匙,但一个登录名在一个房间只能拥有此房间的一把钥匙。

       几个特殊的登录名和用户名

                             dbo&sa  

                  dbo(用户名)是指以sa(登录名)或windows administration登录的用户,也就是说数据库管理员在SQLSERVER中的用户名就叫dbo,而不叫 sa。因为通常用户名与登录名相同(为了一目了然)。例如创建了一个登录名称为me,那么可以为该登录名me在指定的数据库中添加一个同名用户,使登录名me能够访问该数据库中的数据。当在数据库中添加了一个用户me 后,之后以me登录名登录时在该数据库中创建的一切对象(表,函数,存储过程等)的所有者都为me,如me.table1,me.fn_test(),而不是dbo.table1,dbo.fn_test()。

                   public  

                 SQL Server中还有一个特殊的数据库角色public,它存在于每一个数据库中,包括系统数据库,如master、msdb、model和用户数据库,数据库的所有用户都属于public角色,并且不能从public角色中删除。

                    guest   在SQLSERVER数据库中,guest帐户是特殊的用户帐户。如果用户使用USE database语句访问的数据库中没有与此用户关联的帐户,此用户就与guest用户相关联。

         SQLSERVER使用所有者进行限定,是因为不同的用户可能创建同名的对象,例如登录名me和登录名you在pubs数据库中分别创建了用户名me和you,这二个用户都创建了testtable这个同名表,而这二个表虽然同名但结构或数据可能完全不同,为了避免调用错误,必须使用所有者名称进行限定.  

                      如何来调用别的用户创建的对象呢?例如me用户访问you用户创建的表或访问dbo创建的表. 此种情况,必须同时满足二个条件:

            1. 将me用户的数据库角色设置为db_owner,否则无法访问其他用户(包括dbo用户)创建的对象。(企业管理器-> 用户,右键菜单 <属性> 中设置) :

               2. 使用所有者进行限定。 例如me访问you创建的testtable: select * from you.testtable

      另外,dbo用户作为管理员,系统赋予其所有的权限,可以调用任何用户创建的对象。  

 若某个数据库存在2个或2个以上的用户名,如果具有db_owner角色的用户在访问对象时省略了所有者,则系统先查找该用户的对象。若找不到则查找dbo用户是否有同名对象。例如:

               select * from testtable 或 select * from pubs..testtable

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值