`

SQLSERVER 2005架构详解

阅读更多
在sqlserver 2005中,可能大家在工作或学习的时候会经常发现这样一些问题,你使用一个账户在数据库中创建了一张表,却发现你自己创建的表却没有修改和查询的权限,这是一件很郁闷的事情,在sqlserver2000中却不存在这样的问题,那为什么在2005中会出现这样的事情,这样的设置可以带来哪些好处?其实导致这一问题的原因主要在于2005中多了一个新的概念—架构。

         首先我们来看一下msdn中对架构的定义:架构(Schema)是形成单个命名空间的数据库实体的集合。命名空间是一个集合,其中每个元素的名称都是唯一的。在这里,我们可以将架构看成一个存放数据库中对象的一个容器。

架构实际上在sqlserver2000中就已经存在,当我们使用查询分析器去查询一个表的时候,一个完整的表的名称应该包括服务器名.数据库名.用户名.对象名,而在sqlserver2005中一个表的完全限定名称应该为服务器名.数据库名.架构名.对象名

在2000中,假如有一个账户tt在test数据库中创建了一张表table1的时候,在服务器上对查询的语句应为select * from test.tt.table1,也就是说,在sqlserver 2000中一张表所属的架构默认就是表的创建者的登录名称,用户可以和修改他所创建的所有数据库对象。但在2005中已经将用户和其创建对象所属架构的关联取消了,而加入了一个全新的架构体系,这样做的优点主要在于下面几个方面:

1.          多个用户可以通过角色(role)或组(Windows groups)成员关系拥有同一个架构。在2005中,每个数据库中的固定数据库角色都有一个属于自己的架构,如果我们创建一个表,给它指定的架构名称为db_ddladmin,那么任何一个属于db_ddladmin中的用户都是可以去查询、修改和删除属于这个架构中的表,但是其它不属于这个组的用户是不行的,有一点必须注意,db_dbdatareader组的成员可以查看所有数据库中的表,db_dbdatawriter组成员可以修改所有数据库中的表,db_owner组成员可以对数据库所有表进行所有操作,这几个组的成员可以通过角色获取到在数据库中的特殊权限。

2.         删除数据库用户变得极为简单。在 SQL Server 2000 中,用户(User)和架构是隐含关联的,即每个用户拥有与其同名的架构。因此要删除一个用户,必须先删除或修改这个用户所拥有的所有数据库对象,就比如一个员工要离职要删除他的账户的时候,还得将他所创建的表和视图等都删除,影响过大。将架构和对象者分离后就不在存在这样的问题,删除用户的时候,对数据库对象是没有任何影响的。

3.         共享缺省架构使得开发人员可以为特定的应用程序创建特定的架构来存放对象,这比仅使用管理员架构(DBO schema)要好。

4.         在架构和架构所包含的对象上设置权限(permissions)比以前的版本拥有更高的可管理性。

5.         区分不同业务处理需要的对象,例如,我们可以把公共的表设置成pub的架构,把销售相关的设置为sales,这样管理和访问起来更容易.

大多数用户在创建对象的时候习惯直接输入对象名而将对象的架构名称省略,在2005中,会给用户创建的这样的表加上一个缺省的架构,用户如果没有对自己的默认架构做设置,那缺省架构就是dbo,也就是说,如果一个db_ddladmin的成员在数据库中创建一个没有加上架构名称的表,这个表在数据库中的完整名称应该是dbo.表名,创建者在数据库中如果不是属于其它特殊组的成员,是不能对自己创建的表进行任何修改和查询的,那就相当于把自己赚的钱存进了别人的银行卡,自己却取不出来。

分享到:
评论

相关推荐

    sqlserver 2008 创建数据表 详解

    sqlserver 2008 创建数据表 详解sqlserver 2008 创建数据表 详解sqlserver 2008 创建数据表 详解sqlserver 2008 创建数据表 详解

    详解SQL Server数据库架构和对象、定义数据完整性

    本篇文章详细讲解了SQL Server的主键约束、唯一约束和外键约束这一块。图文并茂,方便大家理解与学习。有兴趣的朋友可以看下

    sql server 编译与重编译详解

    SQLSERVER编译与重编译 编译的含义 ...SQLSERVER会根据所涉及的对象的架构(schema)、统计信息以及指令的具体内容,估算可能的执行计划, 以及他们的成本(cost),最后选择一个SQLSERVER认为成本

    SQL Server DBA工作内容详解

    在Microsoft SQL Server 2008系统中,数据库管理员(Database Administration,简称为DBA)是重要的角色。DBA的工作目标是确保Microsoft SQL Server 2008系统正常高效地运行。DBA的工作也是繁忙的工作,无论是性能...

    详解SQL Server 2016快照代理过程

    SQLServer2016版本对快照代理做了一些比较好的优化,接下来详细了解一下快照的执行过程。 一、快照代理文件 在执行快照作业是会在指定的快照目录生成4种类型的文件。 BCP文件:发布对象的数据文件。 IDX文件:索引...

    log4net配置详细图解+Demo

    资源包含log4net配置过程详细图解文档、Demo、插件,其中log4net配置过程详细图解文档包含插件简介、下载、引入VS2010、配置、使用、总结

    分布式数据库HBase的架构设计详解

    提到传统数据库,很多人会很容易联想到Oracle、MySQL、SQL Server等带有很明显关系型数据库特征的数据库系统。在我看来,传统数据库并不等于这些数据库,而是看你怎么用的。一般来说,传统数据库包括以下三个鲜明的...

    ASP.NET三层架构详解 如何实现三层架构

    /* DBMS name: Microsoft SQL Server 2000 */ /*==============================================================*/ if exists (select 1 from sysobjects where id = object_id('newsContent') and type = 'U

    Transactional replication(事务复制)详解之如何跳过一个事务

    事务复制由 SQL Server 快照代理、日志读取器代理和分发代理实现。 快照代理准备快照文件(其中包含了已发布表和数据库对象的架构和数据),然后将这些文件存储在快照文件夹中,并在分发服务器中的分发数据库中记录...

    Lucene中文分词源码详解

    本文主要是利用Lucene对MS Sql Server 2000进行建立索引,然后进行全文索引。至于数据库的内容,可以是网页的内容,还是其它的。本文中数据库的内容是图书馆管理系统中的某个作者表- Authors表。

    实战Windows Azure : 微软云计算平台技术详解

    作者对.NET平台以及云计算技术有浓厚的研究兴趣和造诣,熟悉Windows Azure、ASP.NET MVC、WCF、LINQ、SQL Server、IIS和XML等,精通数据库应用系统、分布式系统和互联网系统的开发流程、技术体系和架构设计,对面向...

    疯狂Android讲义 高清扫描 有书签目录-part3

    http://www.eoeandroid.com/thread-199577-1-1.html 深入Linux内核架构-高清扫描中文版-1055页-108M http://www.eoeandroid.com/thread-198472-1-1.html 精通LINUX设备驱动程序开发中文扫描版36M ...

    LINUX内核源代码导读 高清扫描有书签目录

    http://www.eoeandroid.com/thread-199577-1-1.html 深入Linux内核架构-高清扫描中文版-1055页-108M http://www.eoeandroid.com/thread-198472-1-1.html 精通LINUX设备驱动程序开发中文扫描版36M ...

    log4Net详解(共2讲)

    2、SQL Server2005视图、存储过程、用户自定义函数、触发器 ASP.net方面: 1、ASP.net PetShop七层架构 2、抽象工厂+反射+配置文件实现数据库无缝切换 3、序列化/反序列化+泛型集合的应用 4、利用ASP.net ...

    疯狂Android讲义 高清扫描 有书签目录-part2

    http://www.eoeandroid.com/thread-199577-1-1.html 深入Linux内核架构-高清扫描中文版-1055页-108M http://www.eoeandroid.com/thread-198472-1-1.html 精通LINUX设备驱动程序开发中文扫描版36M ...

    mysql基础架构教程之查询语句执行的流程详解

    一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇文章了。 这篇笔记主要记录mysql的基础架构,一条查询语句是如何执行的。 下面话不多说了,来一起看看详细的...

    asp.net知识库

    ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf部署 ASP.NET 2.0 Security FAQs Asp.net 2.0功能体验,细节之Web控件(一) 隐藏控件 Asp.net 2.0功能体验,总体设计思想 Asp.net 2.0 WebPart使用经验点滴 革新:.NET...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    17.5.1 [sql:setdatasource] 520 17.5.2 [sql:query] 521 17.5.3 [sql:param] 524 17.5.4 [sql:dateparam] 525 17.5.5 [sql:update] 526 17.5.6 [sql:transaction] 527 17.6 xml标签库 529 17.6.1 核心操作 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    17.5.1 [sql:setdatasource] 520 17.5.2 [sql:query] 521 17.5.3 [sql:param] 524 17.5.4 [sql:dateparam] 525 17.5.5 [sql:update] 526 17.5.6 [sql:transaction] 527 17.6 xml标签库 529 17.6.1 核心操作 ...

Global site tag (gtag.js) - Google Analytics