您的位置:首页 > 数据库 > SQL

SQL SERVER 用户架构分离

2016-08-23 19:39 323 查看
在 SQL Server 2005 中,架构行为已更改。架构不再等效于数据库用户;现在,每个架构都是独立于创建它的数据库用户存在的不同命名空间。也就是说,架构只是对象的容器。任何用户都可以拥有架构,并且架构所有权可以转移。


新行为



所有权与架构的分离具有重要的意义:

架构的所有权和架构范围内的安全对象可以转移。有关详细信息,请参阅 ALTER AUTHORIZATION (Transact-SQL)

对象可以在架构之间移动。有关详细信息,请参阅 ALTER SCHEMA (Transact-SQL)

单个架构可以包含由多个数据库用户拥有的对象。

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

与早期版本相比,对架构及架构中包含的安全对象的权限的管理更加精细。有关详细信息,请参阅 GRANT 架构权限 (Transact-SQL) 和 GRANT
对象权限 (Transact-SQL)。

架构可以由任何数据库主体拥有。这包括角色和应用程序角色。

可以删除数据库用户而不删除相应架构中的对象。

如果为 SQL Server 早期版本编写的代码假定架构等效于数据库用户,这些代码可能会返回错误的结果。

为 SQL Server 早期版本设计的目录视图可能会返回错误的结果。这包括 sysobjects。

在创建数据库对象时,如果您将某一有效的域主体(用户或组)指定为对象所有者,则该域主体将作为架构添加到数据库中。这个新架构将为该域主体所拥有。


新目录视图

从 SQL Server 2005 开始,架构是在元数据中反映的显式实体;因此,架构只能有一个所有者,但一个用户可以拥有多个架构。这种复杂关系并未在 SQL Server 2000 系统表中反映,因此 SQL Server 2005 引入了新的目录视图,以准确反映新的元数据。

下表显示了 SQL Server 2000 系统表与其 SQL Server 2005 等效项和更高版本的目录视图之间的映射。

SQL Server 2000 系统表
SQL Server 2005 及更高版本的目录视图
sysusers
sys.database_principals

sys.schemas
syslogins
sys.server_principals
SQL Server 2005 引入了超过 250 个新目录视图。极力建议使用新的目录视图访问元数据。有关详细信息,请参阅目录视图 (Transact-SQL)

新的 DDL 语句可以将旧的目录视图(如 sysobjects)不能准确反映的复杂关系引入系统元数据中。在下面的示例中,用户 ID 与 sysobjects 返回的架构名称之间不同步,无法反映用户与 SQL Server 2005 中引入的架构之间的区别。

USE tempdb
GO
CREATE LOGIN u1 WITH PASSWORD = 'Mdfjd$sakj943857l7sdfh##30'
CREATE USER u1 WITH DEFAULT_SCHEMA = u1
GO
GRANT CREATE TABLE to u1
GO
CREATE SCHEMA sch1
GO
CREATE SCHEMA u1 AUTHORIZATION u1
GO
EXECUTE AS user = 'u1'
GO
CREATE TABLE t1(c1 int)
GO
revert
GO
SELECT user_name(uid) , * FROM sysobjects WHERE name = 't1'
GO



注意
您必须在任何曾经使用过下列 DDL 语句的数据库中使用新的目录视图:CREATE/ALTER/DROP SCHEMA;CREATE/ALTER/DROP USER;CREATE/ALTER/DROP ROLE;CREATE/ALTER/DROP APPROLE;ALTER AUTHORIZATION。


默认架构

为了解析不完全限定的安全对象名称,SQL Server 2000 使用名称解析来检查执行调用的数据库用户所拥有的架构和 dbo 所拥有的架构。

从 SQL Server 2005 开始,每个用户都拥有一个默认架构。可以使用 CREATE USER 或 ALTER USER 的 DEFAULT_SCHEMA 选项设置和更改默认架构。如果未定义 DEFAULT_SCHEMA,则数据库用户将使用 dbo 作为默认架构。 


请参阅




参考

CREATE SCHEMA (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
CREATE USER (Transact-SQL)
ALTER USER (Transact-SQL)
CREATE SCHEMA (Transact-SQL)
ALTER SCHEMA (Transact-SQL)
sys.schemas (Transact-SQL)


概念

权限层次结构(数据库引擎)
主体(数据库引擎)
保护 SQL Server

原文地址:https://technet.microsoft.com/zh-cn/library/ms190387.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SQL SERVER Schema
相关文章推荐