DBO 架构
来源:互联网 发布:mac海马玩模拟器卸载 编辑:程序博客网 时间:2024/05/20 05:05
1.dbo是一个构架(schema),在sql2005中,表的调用格式如下:“数据库名.构架名.表名”,同一个用户可以被授权访问多个构架,也可以被禁止访问某个或多个构架,这就是2005中提倡的“用户与构架分离”的概念.。在2005中,如果在创建表时没有指定构架(schema),那么系统默认该表的构架是dbo,所以会出现很多表名前自动加上dbo.字符样式 。
2.dbo是每个数据库的默认用户,具有所有者权限,即DbOwner 。通过用DBO作为所有者来定义对象,能够使数据库中的任何用户引用而不必提供所有者名称。
比如:你以User1登录进去并建表Table,而未指定DBO,当用户User2登进去想访问Table时就得知道这个Table是你User1建立的,要写上User1.Table,如果他不知道是你建的,则访问会有问题。
如果你建表时把所有者指给了Dbo,则别的用户进来时写上Dbo.Table就行了,不必知道User1。
不光表是如此,视图等等数据库对象建立时也要如此才算是好。
建表、存储过程、视图等数据库对象时,其对应的所有者是创建它的用户。则除了该用户其他登录用户要引用这些东东时,都要加上前缀,很是麻烦。
其实这两种解释都是正确的。
dbo是默认用户也是架构,
dbo作为架构是为了更好的与2000兼容,
在2000中DataBaseName.dbo.TableName解释为:数据库名.用户名.表名,
在2005中DataBaseName.dbo.TableName解释为:数据库名.架构名.表名,
这样2000中的代码移植到2005中就不会报错(dbo在2005中是默认的架构,创建表时,如不指定架构,则默认为属于dbo为个架构)。
在2005前,没有架构的概念,只有用户的概念,那时候DBO是默认用户,大部分的数据库对象都是dbo的
到了2005,有了架构概念,但是为了向后兼容,保留了DBO,并且把DBO作为默认架构,在不指定架构的情况下,默认为dbo
虽然 SQL Server 2000 包含 CREATE SCHEMA 语句,但实际上并不会像上面所定义的那样创建架构。在 SQL Server 2000 中,数据库用户和架构是隐式连接在一起的。每个数据库用户都是与该用户同名的架构的所有者。对象的所有者在功能上与包含它的架构所有者相同。因而,SQL Server 2000 中的完全限定名称的“架构”也是数据库中的用户。
在 SQL Server 2005 中,架构独立于创建它们的数据库用户而存在。可以在不更改架构名称的情况下转让架构的所有权。并且可以在架构中创建具有用户友好名称的对象,明确指示对象的功能。
SQL Server 2005 还引入了“默认架构”的概念,用于解析未使用其完全限定名称引用的对象的名称。在 SQL Server 2000 中,首先检查的是调用数据库用户所拥有的架构,然后是 DBO 拥有的架构。在 SQL Server 2005 中,每个用户都有一个默认架构,用于指定服务器在解析对象的名称时将要搜索的第一个架构。可以使用 CREATE USER 和 ALTER USER 的 DEFAULT_SCHEMA 选项设置和更改默认架构。如果未定义 DEFAULT_SCHEMA,则数据库用户将把 DBO 作为其默认架构
- DBO 架构
- DBO
- dbo
- 拒绝了对对象'users' (数据库'People',架构'dbo...
- MS-sql 2005拒绝了对对象 'xxx' (数据库 'xxx',架构 'dbo')的 SELECT 权限
- 拒绝了对对象 'address' (数据库 'auto',架构 'dbo')的 INSERT 权限
- MS-sql 2005拒绝了对对象 'xxx' (数据库 'xxx',架构 'dbo')的 SELECT 权限
- 拒绝了对对象'users' (数据库'People',架构'dbo')的SELECT 权限
- sql 2005拒绝了对对象 'xxx' (数据库 'xxx',架构 'dbo')的 SELECT 权限
- MS-sql 2005拒绝了对对象 ''xxx'' (数据库 ''xxx'',架构 ''dbo'')的 SELECT 权限
- 拒绝了对对象 'xxx' (数据库 'xxx',架构 'dbo')的 SELECT 权限
- 拒绝了对对象 'xxx' (数据库 'xxx',架构 'dbo')的 SELECT 权限。
- 拒绝了对对象 'XXX' (数据库 'XXX',架构 'dbo')的 SELECT 权限
- 拒绝了对对象 'XXX' (数据库 'XXX',架构 'dbo')的 SELECT 权限
- 指定的架构名称 "dbo" 不存在,或者您没有使用该名称的权限.
- 拒绝了对对象 'user' (数据库 '****',架构 'dbo')的 SELECT 权限
- 什么是DBO?
- sqlserver dbo
- Android invalidate 与postInvalidate用法(更新视图)
- 【python写批处理】仿dir命令
- Struts2_2.1.6版本的中文问题
- linux定时器Timer的用法
- 单例模式
- DBO 架构
- 17个常用代码整理
- iphone开发资料汇总(很多实用的东东)
- graphicspath创建
- 蛇形走线在PCB设计中的作用
- Spring3核心技术之AOP配置
- 可任意自定义的UITableViewCell
- Android中Handler的使用
- 在64位Linux上安装Memcached