高分求解:SQL2005中“DBO”到底是什么,请对SQL有多年了解的前辈看贴

no_smile_hi 2008-01-31 02:05:48
在SQL2005中看见很多表名都有前缀dbo,但是不写也可以。比如pubs的数据库中的表dbo.title

请问:这里的DBO到底是什么?是什么概念?

我也上百度找了一下,有两个命案比较像。

1. dbo是一个构架(schema),在sql2005中,表的调用格式如下:"数据库名.构架名.表名",同一个用户可以被授权访问多个构架,也可以被禁止访问某个或多个构架,这就是2005中提倡的"用户与构架分离"的概念. 在2005中,如果在创建表时没有指定构架(schema),那么系统默认该表的构架是dbo,所以会出现很多表名前自动加上dbo.字符样式.
2.DBO是每个数据库的默认用户,具有所有者权限,即DbOwner


这两答案,看上去感觉是大致一样,却明显有差别,真是头痛,希望对SQL有多年了解的前辈们给解释或下一个定论,到底是“构架”还是“默认用户”。谢谢了
...全文
7048 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
kenriy 2010-04-28
  • 打赏
  • 举报
回复
dbo是默认用户也是架构,
dbo作为架构是为了更好的与2000兼容,
在2000中DataBaseName.dbo.TableName解释为:数据库名.用户名.表名,
在2005中DataBaseName.dbo.TableName解释为:数据库名.架构名.表名,
这样2000中的代码移植到2005中就不会报错(dbo在2005中是默认的架构,创建表时,如不指定架构,则默认为属于dbo为个架构)。
lzzz999 2009-05-25
  • 打赏
  • 举报
回复
学习.
no_smile_hi 2008-01-31
  • 打赏
  • 举报
回复
3点10分,我结贴
no_smile_hi 2008-01-31
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20080131/14/cac7ed73-8f73-47c5-84ed-06cfa079dbb2.html

这是我另开的百分贴,请帮助我的朋友也去那留一下名
-狙击手- 2008-01-31
  • 打赏
  • 举报
回复
JF
no_smile_hi 2008-01-31
  • 打赏
  • 举报
回复
我感觉一百分太少了,我另开一个百分的帖子,谢谢你们,请注意
no_smile_hi 2008-01-31
  • 打赏
  • 举报
回复
kk19840210
您给解释的非常好,让我对SQL中的架构有了一个新的认识{也可以说是,从此有了认识},谢谢您了

我结贴了,但还希望各位高手,在最后给我推荐一些关于此类基础知识的书{不要那些只讲语法的},太感谢大家了
dobear_0922 2008-01-31
  • 打赏
  • 举报
回复
dobear_0922
谢谢您的热心回复,我初学所以叫真,麻烦您了

如果要调用远程的数据库(如:数据名Skey,它是Sql2005),就要按照Skey.DataBaseName.dbo.TableName

是这样吗???

----
对的,
kk19840210 2008-01-31
  • 打赏
  • 举报
回复
虽然 SQL Server 2000 包含 CREATE SCHEMA 语句,但实际上并不会像上面所定义的那样创建架构。在 SQL Server 2000 中,数据库用户和架构是隐式连接在一起的。每个数据库用户都是与该用户同名的架构的所有者。对象的所有者在功能上与包含它的架构所有者相同。因而,SQL Server 2000 中的完全限定名称的“架构”也是数据库中的用户。

在 SQL Server 2005 中,架构独立于创建它们的数据库用户而存在。可以在不更改架构名称的情况下转让架构的所有权。并且可以在架构中创建具有用户友好名称的对象,明确指示对象的功能。

SQL Server 2005 还引入了“默认架构”的概念,用于解析未使用其完全限定名称引用的对象的名称。在 SQL Server 2000 中,首先检查的是调用数据库用户所拥有的架构,然后是 DBO 拥有的架构。在 SQL Server 2005 中,每个用户都有一个默认架构,用于指定服务器在解析对象的名称时将要搜索的第一个架构。可以使用 CREATE USER 和 ALTER USER 的 DEFAULT_SCHEMA 选项设置和更改默认架构。如果未定义 DEFAULT_SCHEMA,则数据库用户将把 DBO 作为其默认架构。
no_smile_hi 2008-01-31
  • 打赏
  • 举报
回复
dobear_0922
谢谢您的热心回复,我初学所以叫真,麻烦您了

如果要调用远程的数据库(如:数据名Skey,它是Sql2005),就要按照Skey.DataBaseName.dbo.TableName

是这样吗???

dobear_0922 2008-01-31
  • 打赏
  • 举报
回复
作为默认用户有什么作用??

----------
这个我就不误导你了,等老乌龟来吧,,,
昵称被占用了 2008-01-31
  • 打赏
  • 举报
回复
可以这么理解

DBO既是默认架构,也是默认用户

在2005前,没有架构的概念,只有用户的概念,那时候DBO是默认用户,大部分的数据库对象都是dbo的
到了2005,有了架构概念,但是为了向后兼容,保留了DBO,并且把DBO作为默认架构,在不指定架构的情况下,默认为dbo
dobear_0922 2008-01-31
  • 打赏
  • 举报
回复
dbo是默认用户也是架构,
dbo作为架构是为了更好的与2000兼容,
在2000中DataBaseName.dbo.TableName解释为:数据库名.用户名.表名,
在2005中DataBaseName.dbo.TableName解释为:数据库名.架构名.表名,
这样2000中的代码移植到2005中就不会报错(dbo在2005中是默认的架构,创建表时,如不指定架构,则默认为属于dbo为个架构)。
no_smile_hi 2008-01-31
  • 打赏
  • 举报
回复
既是架构,也是默认用户
---------------------
作为架构有什么作用?作为默认用户有什么作用??我说的有些笨,但真是心急


对所有学习的朋友说一下,这不是散分,我一共才200多分,只是为了学习
no_smile_hi 2008-01-31
  • 打赏
  • 举报
回复
学习
dobear_0922 2008-01-31
  • 打赏
  • 举报
回复
dobear_0922 2008-01-31
  • 打赏
  • 举报
回复
既是架构,也是默认用户
utpcb 2008-01-31
  • 打赏
  • 举报
回复
up!
我所认识的 构架不是用户
我觉得有点像 计算机中的组和 用户一样的概念!
-狙击手- 2008-01-31
  • 打赏
  • 举报
回复
dbo 是具有在数据库中执行所有活动的暗示性权限的用户。
kk19840210 2008-01-31
  • 打赏
  • 举报
回复
默认用户
加载更多回复(1)

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧