在我的本地或专用服务器上,当我创建一个表时,我看到表名如下:
dbo.Foo
当我从某个plesk环境获得一个数据库帐户时,创建的表名为:
mydbuser.Foo
前缀对我的代码有什么影响?或者如果我从我的备份创建一个表/恢复一个表,我应该期待奇怪的结果吗?
答案 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