"拥有架构&#34 ;?的含义/用途是什么?

时间:2017-11-24 09:07:48

标签: tsql sql-server-2012 database-administration

我正在尝试了解SQL Server的安全性,我不确定OwnedSchema的确切用法是什么。有人可以帮我解决这个问题吗?它可以发挥重要作用吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

图片上的对话框会列出所有数据库的模式,如果当前数据库主体是这些模式的所有者,则将某些模式标记为“已检查”。

因此它会显示此查询的结果(您可以使用Profiler捕获):

SELECT
s.name AS [Name],
s.schema_id AS [ID],
ISNULL(dp1.name, N'') AS [Owner],
CAST(
      case when s.name in ('dbo','guest','INFORMATION_SCHEMA','sys','db_owner','db_accessadmin','db_securityadmin','db_ddladmin','db_backupoperator','db_datareader','db_datawriter','db_denydatareader', 'db_denydatawriter') then 1 else 0 end AS bit) AS [IsSystemObject]
FROM
sys.schemas AS s
LEFT OUTER JOIN sys.database_principals AS dp1 
   ON dp1.principal_id = s.principal_id

使用此对话框,您可以将架构的所有者更改为当前用户,即执行以下代码:

ALTER AUTHORIZATION ON SCHEMA::[this_schema] TO [this_user]

此链接也有助于理解Ownership and User-Schema Separation in SQL Server

  

架构所有者和权限

     

架构可以由任何数据库主体和单个主体拥有   可以拥有多个模式。您可以将安全规则应用于架构,   它们由架构中的所有对象继承。一旦你设置好了   对模式的访问权限,这些权限是自动的   应用为新对象时添加到架构中。可以分配用户   默认架构,多个数据库用户可以共享相同的架构   架构。默认情况下,当开发人员在模式中创建对象时,   对象由拥有架构的安全主体拥有,而不是   开发者。可以使用ALTER传输对象所有权   授权Transact-SQL语句。架构也可以包含   由不同用户拥有并具有更多粒度的对象   权限比分配给模式的权限,尽管不是   建议,因为它增加了管理权限的复杂性。   可以在模式之间移动对象,并且可以使用模式所有权   在委托人之间转移。数据库用户可以不用   影响架构。