dbo在dbo.Sometable中是什么意思?
在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下的表。这个问题的解决方法就是创建自己的架构,将表移动到相应的架构下。
在创建表时,如果没有显式指定模式,则会为该表分配默认模式dbo。数据库模式是一种逻辑上将表、视图、存储过程等对象分组的方式。有关模式的更多信息可以在此处阅读。
问题的原因是如果在代码中没有指定模式,则默认使用dbo。但是,如果您有一个具有非dbo模式的表,则在代码中也必须指定模式,否则代码将无法执行。
如果您创建一个表或从备份中还原一个表,是否应该期望出现奇怪的结果?
模式本身并不会引起问题。如果正确指定模式,一切都应该正常运行。