SQLServer中的 dbo

感觉说的都很有道理,随笔记录下来。

说法一:

数据库所有者 (dbo)


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。
用创建该对象的用户名限定。

说法二:

dbo是一个构架(schema),与sql2000不同的是,在sql2005中,表的调用格式如下: "数据库名.构架名.表名" 同一个用户可以被授权访问多个构架,也可以被禁止访问某个或多个构架,这就是2005中提倡的"用户与构架分离"的概念。在2005中,如果在创建表时没有指定构架(schema),那么系统默认该表的构架是dbo,所以会出现很多表名前自动加上dbo.字符样式。 dbo是所有者,默认架构;sa登陆名,对应的数据库用户和默认架构是dbo;系统管理员的默认架构是dbo,所以为sa账号创建的对象都是有dbo的,可以更改,在安全性里选择登陆名更改。

发布了81 篇原创文章 · 获赞 9 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Alone_in_/article/details/102935221