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

SQL Server 2019三类权限是否可查询所有sys、DM视图及函数?

SQL Server 2019权限问题答复

1. 现有权限是否允许SELECT访问所有sys表、动态管理视图/函数

首先直接给结论:不能覆盖全部对象的访问需求。
你提到的微软官方权限规则引用如下:

To query a dynamic management view or function requires SELECT permission on object and VIEW SERVER STATE or VIEW DATABASE STATE permission.

基于该规则和SQL Server 2019的权限逻辑:

  • 大部分常规sys架构目录视图、常用动态管理视图/函数(DMV/DMF)你是可以访问的:VIEW SERVER STATE权限已经覆盖了服务器级、所有数据库级DM对象的STATE权限要求,大部分常规DM对象和sys目录视图默认已经给public角色授予了SELECT权限,VIEW ANY DEFINITION也会辅助保障你能访问大部分公开的元数据对象
  • 少数涉及敏感信息的sys视图、特殊DM对象你无法访问,需要额外授权

2. VIEW ANY DATABASE权限是否等同于VIEW DATABASE STATE权限

二者完全不等同,作用完全独立:

  • VIEW ANY DATABASE是服务器级权限,作用仅为让你可以在实例中看到所有数据库的存在,无权限的用户仅能看到master、tempdb和自己有权限的数据库,该权限和数据库内部的状态查询能力没有任何关联
  • VIEW DATABASE STATE是数据库级权限,需要单独对每个数据库授予,作用是允许查询对应数据库内的数据库级DMV和状态类元数据。你当前可以查询所有数据库的DMV,是因为VIEW SERVER STATE是更高优先级的服务器级权限,默认覆盖了所有数据库的VIEW DATABASE STATE权限要求,和VIEW ANY DATABASE无关

3. 是否存在需要单独显式授予SELECT才能访问的DM对象

存在,SQL Server 2019中有多类DM对象默认未给public授予SELECT权限,哪怕持有VIEW SERVER STATE也需要单独授权:

  • 敏感安全类DM对象:例如sys.dm_exec_query_plan_stats、sys.dm_server_memory_dumps、sys.dm_os_windows_info等涉及明文查询、内存转储、系统底层信息的对象
  • 审计相关DM对象:例如sys.dm_audit_actions、sys.dm_server_audit_status等涉及审计配置、审计日志的对象
  • 高可用、复制相关特殊DM对象:例如涉及Always On内部机密配置的非公开DMV、sys.dm_repl_articles等复制相关元数据对象

你当前测试能访问的都是常用公开DM对象,默认public已经有SELECT权限,所以无需单独授权即可访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:45:07