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

数据库层面与逐表拒绝用户SELECT权限有何区别,效果是否一致

数据库层面拒绝SELECT权限与逐表拒绝的核心差异
  • 作用范围继承性不同:数据库级DENY SELECT会自动应用到当前及未来新增的所有支持SELECT操作的对象,逐表DENY仅对执行脚本时已存在的用户表生效,后续新建的表不会自动被限制。
  • 覆盖对象类型不同:数据库级DENY SELECT覆盖所有可执行SELECT操作的对象,包括用户表、系统表、视图、表值函数、存储过程返回的结果集查询权限等;逐表DENY仅限制用户表的查询权限,视图、函数等其他对象未被单独配置的情况下,用户仍可正常查询。
  • 后续权限调整成本不同:如果后续需要给用户放开某张表的查询权限,逐表DENY的场景只要单独REVOKE对应单表的DENY规则即可;而数据库级DENY的场景下,单独给单表授予SELECT权限不会生效,必须先REVOKE数据库级的DENY SELECT,再重新配置细粒度权限,操作成本高很多。
两个脚本的执行效果对比

两个脚本执行后不会得到相同效果,核心差异如下:

  • 脚本1使用未公开系统存储过程sp_msforeachtable遍历当前数据库的所有用户表,给每张表单独为UserA添加SELECT权限的DENY规则。执行后UserA仅无法查询执行脚本时已存在的用户表,仍可查询视图、表值函数、后续新建的用户表,以及有权限的系统表。
  • 脚本2直接在当前数据库层级为UserA添加SELECT权限的DENY规则。执行后UserA无法查询该数据库内任何支持SELECT操作的对象,包括已有的、后续新建的表/视图/函数等,哪怕后续单独为某张表给UserA开放SELECT权限也会被数据库级的DENY规则覆盖,无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:12:01