SQL server 2008架构

1.简介
架构是一个对象有容器,它包含表、视图、存储过程等数据对象的容器。从包含关系上来讲,架构位于数据库内部,而数据库位于服务器内部。

在默认情况下系统的默认架构是dbo。如果是访问默认架构中的对象则可以忽略架构名称,否则在访问表、视图等对象时需要指定架构名称。

2.创建架构
1.使用SQL Server Management Studio的对象资源管理器创建架构
操作步骤:
(1)启动SQL Server Management Studio管理平台,在“对象资源管理器”中展开stu_mag数据库结点。
(2)在“对象资源管理器”中展开stu_mag数据库的“安全性”节点下的“架构”节点。
(3)右击“架构”节点,在弹出的快捷菜单中选择“新建架构”选项,系统将弹出“架构-新建”对话框。
(4)在“架构名称”文本框中输入架构名称。
(5)在“架构所有者”文本框中输入架构的所有者用户,或者单击“搜索”按钮,系统弹出“搜索角色和用户”对话框。
(6)单击“浏览”按钮系统将弹出“查找对象”对话框,其中列出了数据库中所有的角色和用户。
(7)在其中选中架构的拥有者对象并单击“确定”按钮,最后在“架构-新建”对话框中单击“确定”按钮完成架构的创建工作。

3.使用Transact-SQL语句创建架构
语法格式如下:
CREATE SCHEMA schema_name_clause[[…n]]
< schema_name_clause >::=
{
schema_name
|AUTHORIZATION owner_name
| schema_name AUTHORIZATION owner_name
}
::=
{
table_definition|view_definiion|grant_statement
|revoke_statement|deny_statement
}
相关参数说明如下:
schema_name:数据库内架构的名称。
AUTHORIZATION owner_name:指定将拥有架构的数据库级主体的名称。此主体还可以拥有其他架构,并且可以不使用当前架构作为其默认架构。
table_definition:指定在架构内创建表的CREATE TABLE语句。执行此语句的主体必须对当前数据库具有CREATE TABLE权限。
view_definiion:指定在架构内创建视图的CREATE VIEW语句。执行此语句的主体必须对当前数据库具有CREATE VIEW权限。
grant_statement:指定可对除新架构外的任何安全对象授予权限的GRANT语句。
revoke_statement:指定可对除新架构外的任何安全对象撤销权限的REVOKE语句。
deny_statement:指定可对除新架构外的任何安全对象拒绝授予权限的DENY语句。
eg: 在stu_mag数据库中创建一个架构trh,该架构的拥有者为用户TEST_1,对应的SQL命令如下:
Use stu_mag
GO
Create Schema trh Authorization TEST_1

  1. 在SQL Server 2008中将所有权与架构分离具有重要的意义:
    1)架构的所有权和架构范围内的安全对象可以转移。
    2)对象可以在架构之间移动
    3)单个架构可以包含由多个数据库用户拥有的对象。架构和用户之间是多对多的关系,一个用户可以拥有多个架构,一个架构也可以分给多个用户。
    4)多个数据库用户共享单个默认架构。
    5)与早期版本相比,对架构及架构中包含的安全对象权限的管理更加精细。
    6)架构可以由任何数据库主体拥有,其中包括角色和应用程序角色。
    7)可以删除数据库用户而不删除相应架构中的对象。删除用户并不会造成对架构和架构中对象的影响。

5.修改架构
1.使用SQL Server Management Studio的对象资源管理器修改架构
(1)启动SQL Server Management Studio管理平台,在“对象资源管理器”中展开stu_mag数据库结点。继续展开stu_mag数据库的“安全性”节点下的“架构”节点。
(2)右击“架构”节点下需要修改的架构my_dba,弹出的快捷菜单中选择“属性”命令,系统将弹出“架构属性-my_dba”对话框。
(3) 在“架构属性-my_dba”对话框中进行浏览与修改,余下的过程与创建架构的过程相似

6.使用Transact-SQL语句修改架构
语法格式为:
Alter Schema schema_name Transfer object_name
相关参数说明如下:
schema_name:用于指定当前数据库中的架构名称,安全对象将移入其中。其数据类型不能为SYS或INFORMATION_SCHEMA。
securable_name:为要移入架构中的原架构中所包含的安全对象的名称。
eg: 数据库stu_mag中创建了表teacher,该表所使用的架构是dbo,现在需要将该表的架构修改为h_1,则对应的SQL脚本代码如下所示:
Alter Schema h_1 Transfer dbo.teacher
7.删除架构
1.使用SQL Server Management Studio的对象资源管理器修改架构
2.使用Transact-SQL语句删除架构
语法格式如下:
Drop Schema schema_name

注:
schema_name为架构在数据库中所使用的名称,要删除的架构不能包含任何对象。如果架构包含对象,则Drop语句失败。

你可能感兴趣的:(数据库相关,数据库,sql,server,架构)