如何撤销表中某列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
相关产品推荐
相关产品推荐

