什么是dbo中的dbo.Sometable

时间:2013-07-24 12:40:05

标签: c# sql-server entity-framework

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

dbo.Foo

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

mydbuser.Foo

前缀对我的代码有什么影响?或者如果我从我的备份创建一个表/恢复一个表,我应该期待奇怪的结果吗?

2 个答案:

答案 0 :(得分:2)

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

  

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

如果您未在代码中指定架构,则默认情况下将使用dbo。虽然如果你有一个包含除dbo之外的模式的表,那么你必须在你的代码中指定,否则它将不会执行。

  

如果我从备份中创建一个表/恢复表,我应该期待奇怪的结果吗?

架构不是邪恶的。如果你正确指定它们,一切都应该没问题。

答案 1 :(得分:0)

<强> DBO

是架构。如果没有为用户帐户定义默认架构,则SQL Server将假定dbo是默认架构。

根据MSDN

  

SQL Server 2005引入了数据库模式的概念和   数据库对象与用户所有权之间的分离。一个东西   由数据库用户拥有的不再与该用户绑定。物体   现在属于一个模式 - 一个可以容纳许多数据库的容器   对象。架构所有者可能拥有一个或多个架构。这个概念   创建在数据库中公开数据库对象的机会   消费,但保护他们免受修改,直接访问使用   糟糕的查询技术,或由所有者以外的用户删除。

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

CREATE SCHEMA [EnterSchemaNameHere] AUTHORIZATION [dbo]

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

Financial.Foo

Personal.Foo