dbo在dbo.Sometable中是什么意思?

11 浏览
0 Comments

dbo在dbo.Sometable中是什么意思?

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

dbo.Foo

由于我从某个 Plesk 环境中获得了一个数据库账户,因此创建的表名为:

mydbuser.Foo

这个前缀对我的代码有什么影响?如果我创建一个表/从备份中恢复一个表,我会得到奇怪的结果吗?

0
0 Comments

在SQL Server中,dbo是指默认的架构(schema)。如果用户账户没有定义默认架构,SQL Server会将dbo作为默认架构。

根据MSDN的说法,SQL Server 2005引入了数据库架构的概念,并且将数据库对象与用户所有权分开。一个由数据库用户拥有的对象不再与该用户绑定,而是属于一个架构,即一个可以容纳多个数据库对象的容器。架构所有者可以拥有一个或多个架构。这个概念为在数据库中公开数据库对象提供了机会,同时保护它们免受修改、使用低效查询技术直接访问或被所有者以外的用户删除。

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

CREATE SCHEMA [EnterSchemaNameHere] AUTHORIZATION [dbo]

可以使用架构来逻辑上分组你的表,例如创建一个“Financial”信息的架构和一个“Personal”数据的架构。你的表将显示为:

Financial.Foo

Personal.Foo

因此,当在dbo.Sometable中看到dbo时,意味着Sometable是位于默认架构dbo下的表。这个问题的解决方法就是创建自己的架构,将表移动到相应的架构下。

0
0 Comments

在创建表时,如果没有显式指定模式,则会为该表分配默认模式dbo。数据库模式是一种逻辑上将表、视图、存储过程等对象分组的方式。有关模式的更多信息可以在此处阅读。

问题的原因是如果在代码中没有指定模式,则默认使用dbo。但是,如果您有一个具有非dbo模式的表,则在代码中也必须指定模式,否则代码将无法执行。

如果您创建一个表或从备份中还原一个表,是否应该期望出现奇怪的结果?

模式本身并不会引起问题。如果正确指定模式,一切都应该正常运行。

0