系统动态管理视图与功能

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics分析平台系统(PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库Microsoft Fabric 中的 SQL 数据库

动态管理对象包括 动态管理视图 (DMV)和 动态管理函数 (DMF)。 这些对象返回服务器状态信息,可用于监控服务器实例的健康状况、诊断问题和调优性能。

动态管理对象要么 是服务器范围 ,要么是数据库 范围

查询动态管理对象

所有动态管理对象都存在 sys 于模式中,并遵循命名规范 dm_*

使用动态管理对象时,必须在 sys 该对象名称前加上该结构。 例如,要查询 dm_os_wait_stats 动态管理视图,运行以下查询:

SELECT wait_type,
       wait_time_ms
FROM sys.dm_os_wait_stats;

下表描述了如何在Transact-SQL中引用动态管理对象:

T-SQL 参考 动态管理视图 动态管理功能
单部分命名
两部分命名 是的 是的
三部分命名 是的 是的
四部分命名 是的

注解

动态管理对象返回内部的、实现特定的状态数据。 它们的模式和返回的数据可能会在未来的 数据库引擎 版本中发生变化。 因此,未来版本中的动态管理对象可能与本版本的动态管理对象不兼容。

例如,在未来的 数据库引擎 版本中,Microsoft 可能会通过在列列表末尾添加列来增强任何动态管理视图的定义。 生产代码不要用语法 SELECT * FROM dynamic_management_view_name ,因为返回的列数可能会变化,导致应用崩溃。

Permissions

查询动态管理对象需要SELECT对该对象有权限,且取决于对象的范围和 SQL Server 数据库引擎 版本:

版本 服务器范围 数据库范围
SQL Server 2019(15.x)及更早版本 VIEW SERVER STATE VIEW DATABASE STATE
SQL Server 2022 (16.x) 及更高版本 VIEW SERVER PERFORMANCE STATE,或 VIEW SERVER SECURITY STATE 用于安全相关对象 VIEW DATABASE PERFORMANCE STATE,或 VIEW DATABASE SECURITY STATE 用于安全相关对象

要选择性地限制访问,创建用户或登录 master 后,拒绝该用户 SELECT 对你想要屏蔽的特定动态管理视图或功能的权限。 用户之后无论数据库上下文如何,都无法从这些对象中选择。

注释

DENY 优先于 GRANT。 例如,被 VIEW SERVER PERFORMANCE STATE 授予但被 VIEW DATABASE PERFORMANCE STATE 拒绝的用户可以看到服务器级信息,但无法看到数据库级信息。