SQL 2014 架构

    1、架构的定义 

     架构是指包含表、视图、存储过程等数据库对象容器。架构位于数据库内部,而数据库是位于服务器内部。服务器实例是最外部的容器,架构是最里面的容器。架构是独立于数据库用户的非重复的命名空间。如下图1所示。

SQL 2014 架构_第1张图片

图1 数据库引擎 权限层次结构之间的关系图

数据库的安全对象如下。

SQL 2014 架构_第2张图片

图2 安全对象




   2、 架构和用户的关系

     (1) 架构-用户:一对多的关系;

     (2) 架构-角色:多对多的关系

     (3)一个架构中不能包含相同名称的对象,相同名称的对象可以在不同的架构中存在。 

     (4)一个架构只能有一个所有者,所有者可以是用户, 数据库角色, 应用程序角色。

     (5)一个用数据库角色可以可以拥有一个默认架构,和多个架构。

     (6)多个数据库用户可以共享单个默认架构。

     (7)由于架构与用户独立,删除用户不会删除架构中的对象。

    3、数据库对象访问

       语法格式:架构名.对象名

     [例1] 列出数据所有的架构

      select sys.objects.name,sys.schemas.name
      from   sys.objects,sys.schemas
      where sys.objects.type='U' and   sys.objects.schema_id=sys.schemas.schema_id

    4、系统内置架构

     SQL Server 随附了十个预定义的架构,它们与内置数据库用户和角色具有相同的名称。这些架构主要用于向后兼容性。



        如果不需要与固定数据库角色具有相同名称的架构,则可以删除它们。 但是不能删除下列架构:

  • dbo

  • guest

  • sys

  • INFORMATION_SCHEMA

  • 如果从模型数据库中删除这些架构,它们将不会显示在新数据库中。sys 和 INFORMATION_SCHEMA 架构是为系统对象而保留的。您不能在这些架构中创建对象,而且不能删除它们。

  • 6.dbo 架构

      dbo 是新创建的数据库的默认架构。 dbo 架构由 dbo 用户帐户拥有。默认情况下,使用 CREATE USER Transact-SQL 命令创建的用户的默认架构为 dbo分配了 dbo 架构的用户不继承 dbo 用户帐户的权限。用户不从架构继承权限;架构权限由架构中包含的数据库对象继承。当使用部分名称来引用数据库对象时,SQL Server 首先在用户的默认架构中查找。如果在此处未找到该对象,则 SQL Server 其次将在 dbo 架构中查找。如果对象不在 dbo 架构中,则会返回一个错误。

   7.架构所有者和权限

    任何数据库主体都可以拥有架构,并且一个主体可拥有多个架构。您可以对架构应用安全规则,安全规则将由架构中的所有对象继承。如果设置了对架构的访问权限,则当新对象添加到架构时,新对象会自动应用这些权限。可以为用户分配一个默认的架构,且多个数据库用户可以共享同一架构。默认情况下,当开发人员在架构中创建对象时,该对象由拥有架构的安全主体而不是开发人员拥有。可以使用 ALTER AUTHORIZATION Transact-SQL 语句转移对象所有权。虽因架构会增大管理权限的复杂度而不建议使用,但架构仍然可以包含由不同用户拥有的对象并可具有比分配给架构的权限更加细化的权限。对象可以在架构之间移动,架构所有权也可以在主体之间转移。可以在不影响架构的情况下删除数据库用户。


0

你可能感兴趣的:(SQL)