dbo是默认用户也是架构
dbo是默认用户也是架构
dbo作为架构是为了更好的与2000兼容,
在2000中DataBaseName.dbo.TableName解释为:数据库名.用户名.表名,
在2005中DataBaseName.dbo.TableName解释为:数据库名.架构名.表名,
这样2000中的代码移植到2005中就不会报错(dbo在2005中是默认的架构,创建表时,如不指定架构,则默认为属于dbo为个架构)。
在2000中:
dbo 是 database owner 的缩写, 是数据库对象所有者SQL SERVER 中的 对象的标准写法是 databasename.databaseownername.objectname
数据库所有者 (dbo) dbo 是具有在数据库中执行所有活动的暗示性权限的用户。将固定服务器角色 sysadmin 的任何成员都映射到每个数据库内称为 dbo 的一个特殊用户上。另外,由固定服务器角色 sysadmin 的任何成员创建的任何对象都自动属于 dbo。
在2005中:
dbo是一个构架(schema),与sql2000不同的是,在sql2005中,表的调用格式如下:"数据库名.构架名.表名",同一个用户可以被授权访问多个构架,也可以被禁止访问某个或多个构架,这就是2005中提倡的"用户与构架分离"的概念.
在2005中,如果在创建表时没有指定构架(schema),那么系统默认该表的构架是dbo,所以会出现很多表名前自动加上dbo.字符样式.
什么时候使用:
数据库名.构架名.表名,这种方式在相同的数据服务器,但是所用表不在当前编码的数据库内。
例1:在数据库A中有表dbo.T1,B中有dbo.T2。
在数据库B里调用T1这时候要写成 select * from A.dbo.T1
例2:使用链接数据库的时候:
SELECT * FROM [连接名].[数据库名].[架构名].[表名]
SELECT * FROM testlink.test.dbo.t1