您的位置:首页 > 运维架构 > 网站架构

6.6 架构

2016-01-01 20:15 453 查看
6.6 架构

6.6.1 架构
  架构(Schema)是一个命名的数据库对象容器,每个数据库对象(视图、表、函数等)都属于一个架构。架构将数据库对象分组为单独的命名空间,不同的架构中可以出现重名的对象。因此,访问一个数据库对象时,通常应该是两段式名称:<架构名>.<对象名>。

  可以对架构应用安全规则,安全规则将由架构中的所有对象继承。如果设置了对架构的访问权限,则当新对象添加到架构时,新对象会自动应用这些权限。用户不从架构继承权限;架构权限仅由架构中包含的数据库对象继承。
  在 SQL Server 2000 中就已经存在了架构,此时数据库用户和架构是隐式连接在一起的,每个数据库用户都是与该用户同名的架构的所有者。从 SQL Server 2005 开始,架构与用户分离,多个用户可以通过角色或 Windows 组成员关系拥有同一个架构。可删除用户而不删除相应架构中的对象。
  任何数据库主体都拥有一个或多个架构。可以通过查询 sys.schemas 视图获得列表。

6.6.2 预定义的架构
  SQL Server 预定义了一些架构,他们与内置数据库用户和角色具有相同的名称。这些架构主要用于向后兼容性。如果没要必要保留这些与固定数据库角色具有相同名称的架构,则可以删除它们。
  不能修改或删除下列 4 个预定义的架构。
(1)dbo
  dbo 是新创建的数据库的默认架构。dbo 架构由 dbo 用户帐户拥有。默认情况下,使用 CREATE USER 语句创建的用户的默认架构为 dbo。
  dbo 用户与 dbo 架构是不同的概念,分配了 dbo 架构的用户不继承 dbo 用户帐户的权限。

(2)sys
  sys 是包含了系统对象的默认架构。系统的元数据、视图、函数等都包含于该架构中。

(3)guest

(4)INFORMATION_SCHEMA
  SQL Server 提供了独立于系统表的元数据库视图,INFORMATION_SCHEMA 架构中包含的元数据视图符合 ISO 标准中的信息架构定义。

提示:
  新建的数据库都是从 model 模型数据库复制而成的,因此,如果从 model 数据库中删除这些预定义的架构,它们就不会显示在新建的数据库中。

6.6.3 新建架构
  任何架构都只能有一个所有者。但是,一个用户可以不拥有架构,也可以拥有多个架构。
  新架构由以下数据库级别主体之一拥有:数据库用户、数据库角色或应用程序角色。 在架构内创建的对象由架构所有者拥有,这些对象在 sys.objects 中的 principal_id 为 NULL。 架构所包含对象的所有权可转让给任何数据库级主体,但架构所有者始终保留对该架构内对象的 CONTROL 权限。
  在创建数据库对象时,如果您将某一有效的域主体(用户或组)指定为对象所有者,则该域主体将作为架构添加到数据库中。 这个新架构将为该域主体所拥有。



  创建新的架构需要对数据库具有 CREATE SCHEMA 权限。
  若要指定其他用户作为所创建架构的所有者,则调用方必须具有对该用户的 IMPERSONATE 权限。 如果指定一个数据库角色作为所有者,则调用方必须拥有该角色的成员身份或对该角色拥有 ALTER 权限。

6.6.4 默认架构
  从 SQL Server 2005 开始,每个用户都拥有一个默认架构。可以使用 CREATE USER 或 ALTER USER 的 DEFAULT_SCHEMA 选项设置和更改默认架构。如果未定义 DEFAULT_SCHEMA,则数据库用户将使用 dbo 作为默认架构。
  创建用户时,可以使用 WITH DEFAULT_SCHEMA 子句为其指定一个默认的架构。
  如果用户具有默认架构,则将使用默认架构。如果用户不具有默认架构,但该用户是具有默认架构的组的成员,则将使用该组的默认架构。如果用户不具有默认架构而且是多个组的成员,则该用户的默认架构将是具有最低 principle_id 的 Windows 组的架构和一个显式设置的默认架构。(不可能将可用的默认架构之一显式选作首选架构。)如果不能为用户确定默认架构,则将使用 dbo 架构。
  当使用部分名称来引用数据库对象时,SQL Server 首先在用户的默认架构中查找。如果在此处未找到该对象,则 SQL Server 其次将在 dbo 架构中查找。如果对象不在 dbo 架构中,则会返回一个错误。为了防止缺少架构名称而影响到查询的执行过程,推荐在引用对象时同时指定架构和对象名称。例如:
SELECT ProductID FROM Production.Product
本文出自 “SQL Server 管理员指南” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: