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 2005 引入了超过 250 个新目录视图。极力建议使用新的目录视图访问元数据。有关详细信息,请参阅目录视图 (Transact-SQL)。
新的 DDL 语句可以将旧的目录视图(如 sysobjects)不能准确反映的复杂关系引入系统元数据中。在下面的示例中,用户 ID 与 sysobjects 返回的架构名称之间不同步,无法反映用户与 SQL Server 2005 中引入的架构之间的区别。
为了解析不完全限定的安全对象名称,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
所有权与架构的分离具有重要的意义:
架构的所有权和架构范围内的安全对象可以转移。有关详细信息,请参阅 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 |
新的 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 2005------用户与架构分离
- Sql Server 2005中的架构(Schema)、用户(User)、角色(Role)和登录(Login)(三)
- Sql Server 2005中的用户架构角色和注册学习
- 黄聪:Sql Server 2005中的架构(Schema)、用户(User)、角色(Role)和登录(Login)(二)
- Sql Server 2005中的架构(Schema)、用户(User)、登录(Login)和角色(Role)
- sql server 安全管理之用户、角色、架构 与 权限
- Sql Server 2005中的架构(Schema)、用户(User)、角色(Role)和登录(Login)(一)
- Sql Server 2005中的架构(Schema)、用户(User)、登录(Login)和角色(Role)(二)
- SQL Server删除用户时产生“数据库主体在该数据库中拥有架构,无法删除”的解决办法
- Sql Server 2005中的架构(Schema)、用户(User)、登录(Login)和角色(Role)
- Sql Server 2005中的架构(Schema)、用户(User)、登录(Login)和角色(Role)
- Sql Server 2005中的架构(Schema)、用户(User)、角色(Role)和登录(Login)(三)
- Sql Server 2005中的架构(Schema)、用户(User)、登录(Login)和角色(Role)(一)
- SQL Server 2005 中的架构与用户
- 黄聪:Sql Server 2005中的架构(Schema)、用户(User)、角色(Role)和登录(Login)(一)
- (zz)Sql Server 2005中的架构(Schema)、用户(User)、角色(Role)和登录(Login)(二)
- SQL Server 2005 中的架构与用户
- Sql Server 2005中的架构(Schema)、用户(User)、角色(Role)和登录(Login)(三)
- Sql Server 2005中的架构(Schema)、用户(User)、角色(Role)和登录(Login)(二)
- Sql Server 2005中的架构(Schema)、用户(User)、登录(Login)和角色(Role)(一)