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

如何撤销表中某列SELECT权限且允许用户执行SELECT *查询?

如何让SELECT *仅显示用户有权限的列

当你给用户授予表中特定列的SELECT权限后,直接用SELECT *会因无权访问其他列报错,SQL Server本身没法让SELECT *自动过滤出有权限的列,不过可以通过以下方法实现类似效果:

  • 创建专属视图(最优方案)
    新建一个只包含用户允许访问列的视图,然后给用户授予该视图的SELECT权限。这样用户查询视图时,用SELECT *就能看到所有允许的列,不会触发权限错误。
    示例代码:

    -- 创建视图,仅包含允许访问的列
    CREATE VIEW schema.UserAllowedColumnsView
    AS
    SELECT Col1, Col2 FROM schema.tablename;
    
    -- 给用户授予视图的SELECT权限
    GRANT SELECT ON schema.UserAllowedColumnsView TO [Domain\User];
    
  • 使用存储过程(备选)
    编写一个返回指定列数据的存储过程,授予用户执行该存储过程的权限。但这种方式灵活性不如视图,用户无法自行调整查询条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:04:50