首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dbo.Sometable中的dbo是什么?

dbo.Sometable中的dbo是什么?
EN

Stack Overflow用户
提问于 2013-07-24 12:40:04
回答 2查看 5.9K关注 0票数 2

在本地或专用服务器上,当我创建一个表时,我会看到表名如下:

代码语言:javascript
复制
dbo.Foo

当我从plesk环境中获得一个数据库帐户时,创建的表获得了名称:

代码语言:javascript
复制
mydbuser.Foo

前缀对我的代码有什么影响?或者,如果我从备份中创建了一个表/还原表,我应该期望得到奇怪的结果吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-24 12:43:08

dbo是在创建表而不显式分配架构时分配给表的默认架构。数据库模式是对对象(如表、视图、存储过程等)进行逻辑分组的一种方法。您可以阅读更多有关模式( 这里 )的信息。

前缀对我的代码有什么影响?

如果您没有在代码中指定模式,那么它将以dbo为缺省值。尽管如果您有一个包含dbo以外的模式的表,那么您也必须在代码中指定,否则它将不会执行。

如果我从备份中创建了一个表/还原表,我是否应该期望得到奇怪的结果?

模式不是邪恶的。如果您正确地指定了它们,那么一切都应该是好的。

票数 2
EN

Stack Overflow用户

发布于 2013-07-24 12:51:11

dbo

这是模式。如果未为用户帐户定义默认架构,则Server将假定dbo是默认架构。

根据MSDN

Server 2005引入了数据库模式的概念,以及数据库对象与用户所有权之间的分离。数据库用户拥有的对象不再绑定到该用户。该对象现在属于架构--一个可以容纳许多数据库对象的容器。架构所有者可能拥有一个或多个架构。这个概念创造了在数据库中公开数据库对象以供使用的机会,同时保护它们不受修改、使用糟糕的查询技术的直接访问或所有者以外的用户的删除。

要创建自己的架构,可以使用以下脚本:

代码语言:javascript
复制
CREATE SCHEMA [EnterSchemaNameHere] AUTHORIZATION [dbo]

您可以使用它们对表进行逻辑分组,例如,为“金融”信息创建一个schama,为“个人”数据创建另一个。然后,您的表将显示为:

Financial.Foo

Personal.Foo

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17834311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档