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

查看存储过程/函数/视图/触发器定义需授予用户哪些权限

查看存储过程、函数、视图、触发器定义的权限配置

常规场景的基础权限要求

当用户本身对目标对象持有对应操作权限时,无需额外授权即可查看对象定义:

  • 存储过程、标量/表值函数:持有对象的EXECUTE权限即可查看定义
  • 视图:持有对象的SELECT权限即可查看定义
  • 触发器:作为依附于表/视图的从属对象,持有其所属父表/父视图的SELECT或ALTER任意一种权限,即可查看对应触发器的定义

无SELECT/EXECUTE权限时的定义查看配置

如果需要允许用户查看自身没有操作权限的对象定义,核心是授予VIEW DEFINITION权限,该权限支持按不同粒度灵活配置:

  • 单对象粒度授权(最小权限原则推荐):仅开放指定单个对象的定义查看权限,授权语法示例:
    -- 给用户UserA授予指定存储过程的定义查看权
    GRANT VIEW DEFINITION ON OBJECT::dbo.YourProcedureName TO UserA;
    -- 授权视图、函数、触发器的语法完全一致,替换对应对象名即可
    
  • 架构粒度授权:需要开放某个架构下所有对象的定义查看权时使用,授权后用户可查看该架构下所有表、视图、存储过程、函数、触发器的定义,不受对象本身操作权限限制,示例:
    GRANT VIEW DEFINITION ON SCHEMA::dbo TO UserA;
    
  • 数据库粒度授权:需要开放整个数据库下所有用户自定义对象的定义查看权时使用,示例:
    GRANT VIEW DEFINITION ON DATABASE::YourDatabaseName TO UserA;
    
    注意该层级授权不会开放数据库内系统对象的定义查看权限。
  • 服务器粒度授权(非必要不推荐):给登录名授予VIEW ANY DEFINITION服务器级权限后,该登录名映射的所有数据库用户,可以查看实例内所有数据库的所有对象(含系统对象)定义,权限覆盖范围极大,仅适合数据库管理员等特殊角色使用。

注意:如果对象创建时指定了WITH ENCRYPTION加密选项,无论授予何种权限,都无法通过系统视图、客户端管理工具等常规方式查看对象明文定义,该限制属于对象加密机制,与权限配置无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:15:41