dbo与db_owner区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dbo与db_owner区别相关的知识,希望对你有一定的参考价值。
dbo 是具有在数据库中执行所有活动的暗示性权限的用户。将固定服务器角色 sysadmin 的任何成员都映射到每个数据库内称为 dbo 的一个特殊用户上。另外,由固定服务器角色 sysadmin 的任何成员创建的任何对象都自动属于 dbo。
例如,如果用户 Andrew 是固定服务器角色 sysadmin 的成员,并创建表 T1,则表 T1 属于 dbo,并以 dbo.T1 而不是 Andrew.T1 进行限定。相反,如果 Andrew 不是固定服务器角色 sysadmin 的成员,而只是固定数据库角色 db_owner 的成员,并创建表 T1,则 T1 属于 Andrew,并限定为 Andrew.T1。该表属于 Andrew,因为该成员没有将表限定为 dbo.T1。
无法删除 dbo 用户,且此用户始终出现在每个数据库中。
只有由 sysadmin 固定服务器角色成员(或 dbo 用户)创建的对象才属于 dbo。由任何其他也不是 syadmin 固定服务器角色成员的用户(包括 db_owner 固定数据库角色成员)创建的对象: 属于创建该对象的用户,而不是 dbo 用创建该对象的用户名限定
拥有数据库db_owner角色的用户将可以看到并操作该数据库下所有架构的对象
如果一个用户拥有数据库的db_owner权限,那么该用户将可以操作该数据库下所有架构的对象(也就是该数据库中所有的表、视图、存储过程等对象,拥有db_owner权限的用户都可以看到并进行操作),如果一个用户没有db_owner权限,那么该用户将只能看到该用户所拥有架构的数据库对象。
为了说明这一点我来举个例子,现在数据库里面有一个叫max的用户,他不拥有数据库DW_Demo的任何架构:
但是他拥有数据库的db_owner角色权限:
用max登陆数据库DW_Demo后,他可以看到并操作所有架构的表等对象(可以看到下图中max可以看到db_owner架构和dbo架构的所有表,但是他本身并不拥有这两个架构):
接下来我们用数据库管理员账户来取消用户max在数据库DW_Demo中db_owner的权限:
然后再用max登陆数据库DW_Demo,现在发现他什么都看不到了,原因就是现在他失去了数据库DW_Demo的db_owner权限:
以上是关于dbo与db_owner区别的主要内容,如果未能解决你的问题,请参考以下文章
dbo.aspnet_Users 和 dbo.aspnetUsers 之间有啥区别?