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 之间有啥区别?

sql server服务器的登录账户与数据库用户账户的区别

sql数据库分配用户dbo权限失败

sql之储存过程与函数的区别

为啥C#中数据库sql语句中在表的前面加上.dbo,不加也能正常执行,两者有啥区别!

SQL Server 角色、架构、用户