You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure SQL Server:如何隐藏无权限用户可见的架构列表?

解决Azure SQL Server隐藏无权限架构列表的问题

要让用户只能看到自己有权访问的架构,核心是利用SQL Server系统视图的权限过滤机制,调整角色和用户的权限:

  1. 撤销public角色对sys.schemas的SELECT权限
    默认情况下,public角色拥有sys.schemas的SELECT权限,这会让所有用户看到所有架构的列表。执行以下语句撤销该权限,触发系统视图的权限过滤:
REVOKE SELECT ON sys.schemas TO public;
  1. 授予用户目标架构的VIEW DEFINITION权限
    确保用户能看到自己有权访问的架构,给用户授予目标架构的VIEW DEFINITION权限(如果之前没设置的话):
GRANT VIEW DEFINITION ON SCHEMA::dbo TO someuser;
  1. (可选)针对多架构场景批量处理
    如果有多个需要授权的架构,或者需要批量拒绝其他架构的权限,可以用动态SQL生成语句。比如批量拒绝用户对非dbo架构的VIEW DEFINITION:
DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += N'DENY VIEW DEFINITION ON SCHEMA::' + QUOTENAME(name) + N' TO someuser;' + CHAR(13)
FROM sys.schemas
WHERE name NOT IN ('dbo'); -- 替换成你的授权架构列表

EXEC sp_executesql @sql;

执行完这些操作后,用户someuser就只能看到dbo架构,其他无权限的架构会被隐藏。

注意:撤销public角色的sys.schemas权限会影响所有用户,如果其他用户需要查看所有架构,可以单独给他们授予SELECT ON sys.schemas权限或者VIEW ANY DEFINITION服务器级权限。

内容的提问来源于stack exchange,提问作者Lev Gelman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 18:23:20