答案 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语句。架构也可以包含 由不同用户拥有并具有更多粒度的对象 权限比分配给模式的权限,尽管不是 建议,因为它增加了管理权限的复杂性。 可以在模式之间移动对象,并且可以使用模式所有权 在委托人之间转移。数据库用户可以不用 影响架构。