SQL Server 中“dbo”到底是什么
在SQL Server中看见很多表名都有前缀dbo,但是不写也可以。比如pubs的数据库中的表dbo.title
1. dbo是一个构架(schema),在sql2005中,表的调用格式如下:"数据库名.构架名.表名",同一个用户可以被授权访问多个构架,也可以被禁止访问某个或多个构架,这就是2005中提倡的"用户与构架分离"的概念. 在2005中,如果在创建表时没有指定构架(schema),那么系统默认该表的构架是dbo,所以会出现很多表名前自动加上dbo.字符样式.
2.DBO是每个数据库的默认用户,具有所有者权限,即DbOwner
dbo是默认用户也是架构,dbo作为架构是为了更好的与2000兼容,在2005前,没有架构的概念,只有用户的概念,那时候DBO是默认用户,大部分的数据库对象都是dbo的,到了2005,有了架构概念,但是为了向后兼容,保留了DBO,并且把DBO作为默认架构,在不指定架构的情况下,默认为dbo
在2000中DataBaseName.dbo.TableName解释为:数据库名.用户名.表名,
在2005中DataBaseName.dbo.TableName解释为:数据库名.架构名.表名,
这样2000中的代码移植到2005中就不会报错(dbo在2005中是默认的架构,创建表时,如不指定架构,则默认为属于dbo为个架构)。
如果要调用远程的数据库(如:数据名Skey,它是Sql2005),就要按照Skey.DataBaseName.dbo.TableName
虽然 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 作为其默认架构。
sql server中的登录名,用户,架构,模式,角色,所有者,登录名,dbo之间的关系
登录名是登录数据库服务器时候用的
用户指的是某个具体的数据库中的用户。管理员可以设置登录名和具体的数据库中的用户的映射关系。
下面为了方面,用用户简称某个具体数据库中的用户。
在数据库中。例如在学生选课数据库中,可以有多个用户,每个用户可以有多个模式(在smss中叫做架构,模式的意义就是定义命名空间,防止出现命名冲突),每个模式可以有多张表。注意每个模式只能属于某一个用户。
所有者是一个数据库服务器的登录名,假设A登录数据库服务器,创建了一个数据库,这个数据库的所有者就是A。
dbo这是有两个意思,一个是用户dbo,相当linux中的root用户,拥有最高权限,用windows身份验证登录进去,映射到具体数据库中就是dbo用户;二是模式dbo,默认属于用户dbo,是用户dbo的一个默认命名空间。
SQL Server 中“dbo”到底是什么相关推荐
- SQL SERVER中[dbo]的解释
http://blog.csdn.net/libo2006/article/details/1719178 http://www.cnblogs.com/java-boy/archive/2011/0 ...
- SQL Server中如何取得刚插入的标识值
数据库实际应用中,我们往往需要得到刚刚插入 的标志值来往相关表中写入数据.但我们平常得到的真的是我们需要的那个值么? 有时我们会使用 SELECT @@Identity 来获得我们刚刚插入的值,比如下 ...
- SQL Server中的T-SQL元数据功能的完整指南
In this article, we will demonstrate T-SQL metadata functions available in the SQL Server. 在本文中,我们将演 ...
- 整理:sql server 中sql语句执行顺序
原文地址为: 整理:sql server 中sql语句执行顺序 SQL Server 查询处理中的各个阶段(SQL执行顺序) SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中 ...
- SQL Server 中深入理解GRANT、REVOKE 和 DENY 的区别
在SQL Server数据库登陆账户.数据库用户权限管理中,经常会授予权限.回收权限,有时还会拒绝权限.GRANT.REVOKE是我们常用的,但有时会遇到使用DENY的情形.从英文单词的字面意思来看, ...
- SQL Server中SELECT会真的阻塞SELECT吗?
在SQL Server中,我们知道一个SELECT语句执行过程中只会申请一些意向共享锁(IS) 与共享锁(S), 例如我使用SQL Profile跟踪会话86执行SELECT * FROM dbo.T ...
- 在SQL Server中保存和输出任意类型的文件
我们可以把任意类型的文件保存到SQL Server中,在进行例子之前,先建立测试用表格,TestFile.sql: if exists (select * from dbo.sysobjects wh ...
- SQL Server中读取XML文件的简单做法
SQL Server 2000使得以XML导出数据变得更加简单,但在SQL Server 2000中导入XML数据并对其进行处理则有些麻烦.本文介绍在SQL Server中读取XML文件的简单做法. ...
- SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因...
原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...
- [转帖]在SQL SERVER中实现RSA加密算法
/*本次修改增加了unicode的支持,但是加密后依然显示为16进制数据,因为进行RSA加密后所得到的unicode编码是无法显示的,所以密文依然采用16进制数据显示. 需要特别注意:如果要对中文进行 ...
最新文章
- careercup-链表 2.2
- 2018年的上半年目标之一:培养阅读的兴趣和爱好
- 剖析Elasticsearch集群系列第一篇 Elasticsearch的存储模型和读写操作
- Golang源码探索(一) 编译和调试源码
- 阿里云-流量控制策略
- wextend matlab,小波学习之三(多孔算法与MATLAB swt剖析)转载
- 时间管理(二):时间管理的六项基本原则
- Abaqus齿轮链条传动仿真案例
- 数字序号转为字母序号
- BF算法与KMP算法
- 微信从原版到现在所有界面图片_微信6年来首次更换启动界面地球图片:来感受一下...
- 索引合并和组合索引的比较
- NN、DN、2NN、JN
- Java实现 蓝桥杯VIP 算法提高 3000米排名预测
- python 有没有 hold on的用法
- 使用v-show不起作用的原因有哪些-
- Guava-RateLimiter秒杀限流技术详解
- Numpy 函数 (一) squeeze(), unsquezze()
- Java VM错误解决方法
- Windows 8本地化多语言支持