在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.表名,创建者在数据库中如果不是属于其它特殊组的成员,是不能对自己创建的表进行任何修改和查询的,那就相当于把自己赚的钱存进了别人的银行卡,自己却取不出来。
分享到:
相关推荐
《SQLServer2005数据库开发详解》是针对SQL Server 2005这一数据库管理系统进行深入探讨的教程。该教程旨在帮助初学者从零开始,逐步掌握SQL Server 2005的核心技术和开发方法,直至达到精通的程度。在本文中,我们...
《SQL Server 2005 数据库开发详解代码》是一份深入探讨SQL Server 2005数据库开发的资源集合,旨在帮助开发者更好地理解和运用这一强大的数据库管理系统。SQL Server 2005作为微软公司推出的数据库平台,因其高效、...
【SSH框架详解】 SSH,全称为Struts2、Spring、Hibernate,是Java...总结,"宿舍信息管理系统ssh+sqlServer2005"项目是一个综合运用SSH框架和SQL Server数据库的实例,对于学习和理解Java Web开发有着极高的参考价值。
### SQL Server 2005范例数据库:AdventureWorks与数据仓库详解 #### 冒险作品(AdventureWorks)——一个全面的SQL Server 2005数据库实例 **AdventureWorks**是一个由Microsoft创建的示例数据库,专为SQL Server...
《航空订票系统:MFC与ADO连接SQL Server 2005的实践解析》 在信息技术领域,开发高效、用户友好的应用系统是至关重要的。本篇文章将深入探讨一个基于Visual Studio 2008 (VS2008) 的航空订票系统,该系统运用...
《基于SQL Server 2005的客户管理系统项目源码详解》 在信息化时代,客户关系管理(Customer Relationship Management,CRM)系统已经成为企业提升服务质量和效率的重要工具。本项目源码——"客户管理系统项目源码...
**SQL Server 2005数据库架构详解** SQL Server 2005的数据库架构是构建在数据库管理系统(DBMS)的基础之上,它遵循三级模式的理论,这包括外模式、模式和内模式。理解这一架构对于管理和优化数据库至关重要。 **...
在“SQL Server 2005 ServiceBroker详解(一)”这个资源中,可能包含了以下内容: - PowerPoint 演示文稿:详细介绍了Service Broker的基本概念、架构和工作原理,以及如何配置和管理服务、队列和对话。 - 视频教程...
#### 系统架构详解 - **业务逻辑层**:这一层主要负责处理业务规则和流程,它连接数据访问层与表示层,从数据访问层获取数据并将其发送到表示层。 - **数据访问层**:这一层负责与底层数据库进行交互,包括查询、...
### SQL Server 2008 R2详解手册知识点解析 #### 一、SQL Server 2008 R2概述 **SQL Server 2008 R2**是微软推出的一款功能强大的关系型数据库管理系统,它在原有的SQL Server 2008基础上增加了新的特性和改进。...
【SQLServer2005配置详解】 SQL Server 2005是一款强大的关系型数据库管理系统,广泛应用于数据存储、分析和应用开发。在Windows 7操作系统上安装SQL Server 2005,需要遵循一系列步骤以确保所有依赖服务正常运行。...
《ASP.NET 2.0 + SQL Server 网络应用开发详解》这本书是针对使用ASP.NET 2.0和SQL Server进行Web应用开发的详细指南。ASP.NET是Microsoft .NET框架的一部分,它提供了一种高效、面向对象的方式来构建动态网站、web...
**SQL Server 2005 培训详解** SQL Server 2005是微软公司推出的一款企业级关系数据库管理系统(RDBMS),在2005...这份“sqlserver2005培训ppt”将为初学者提供一个良好的起点,帮助他们快速上手并深入了解这个平台。
《基于SQLServer2005和VS2008的图书馆管理系统详解》 在信息技术日益发达的今天,图书馆管理系统已经成为各类图书馆不可或缺的一部分。本系统利用了Microsoft SQL Server 2005作为数据库管理系统,Visual Studio ...
《Visual C++与SQL Server 2005联合构建的库存管理系统详解》 在IT行业中,高效的库存管理系统是企业管理的核心部分,它可以帮助企业优化资源分配,降低运营成本,提升服务质量。本文将深入探讨如何利用Microsoft的...
【SQL Server 2005 学生管理系统详解】 SQL Server 2005是一款由Microsoft公司推出的数据库管理系统,它是SQL Server系列中的一个重要版本,专为满足企业级数据管理和分析需求而设计。在这个学生管理系统中,SQL ...
#### SQL Server 2005 Reporting Service 新特性详解 ##### ReportBuilder 的引入 ReportBuilder 是一个重要的新工具,它为非专业开发人员提供了创建和修改报表的能力。ReportBuilder 设计简洁直观,用户可以通过...
详解SQL Server分布式查询 SQL Server中的分布式查询(Distributed Query)是指能够访问存放在同一部计算机或不同计算机上的SQL Server或不同种类的数据源。分布式查询与普通查询的区别在于它需要连接多个MSSQL...
10. **wpf_access_sqlserver**:这可能是一个C#或VB.NET的源代码文件,演示了如何在WPF应用中连接到SQL Server并显示数据的步骤。 综上所述,这个例子将涵盖WPF应用程序的基本架构、数据库连接、SQL查询、数据适配...