系统动态管理视图

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

动态管理视图(DMV)和动态管理功能(DMF)返回可用于监视服务器实例运行状况、诊断问题和优化性能的服务器状态信息。

重要

动态管理视图和函数返回特定于实现的内部状态数据。 它们返回的架构和数据可能会在 SQL Server 的未来版本中更改。 因此,未来版本中的动态管理视图和函数可能与此版本中的动态管理视图和函数不兼容。 例如,在 SQL Server 的未来版本中,Microsoft 可以通过将列添加到列列表末尾来增强任何动态管理视图的定义。 我们建议不要在生产代码中使用语法 SELECT * FROM dynamic_management_view_name,这是因为返回的列数可能会更改和中断应用程序。

动态管理视图和函数分为两种类型:

  • 服务器范围内的动态管理视图和函数。 此类型需要具有该服务器的 VIEW SERVER STATE 权限。 对于 SQL Server 2022 及更高版本,需要 VIEW 标准版RVER PERFORMANCE STATE,或者与安全相关的几个 DMV 需要 VIEW 标准版RVER 标准版CURITY STATE。

  • 数据库范围内的动态管理视图和函数。 此类型需要具有该数据库的 VIEW DATABASE STATE 权限。 对于 SQL Server 2022 及更高版本,需要 VIEW DATABA标准版性能状态,或者需要与安全相关的几个 DMV 的 VIEW DATABA标准版 标准版CURITY STATE。

查询动态管理视图

通过使用两部分、三部分或四部分所组成的名称,可在 Transact-SQL 语句中引用动态管理视图。 另一方面,也可使用两部分或三部分所组成的名称在 Transact-SQL 语句中引用动态管理函数。 不能使用单部分名称在 Transact-SQL 语句中引用动态管理视图和函数。

所有动态管理视图和函数都存在于 sys 架构中,并遵循 dm_* 命名约定。 当使用动态管理视图或函数时,必须使用 sys 架构作为视图或函数名称的前缀。 例如,若要查询 dm_os_wait_stats 动态管理视图,请运行以下查询:

SELECT wait_type, wait_time_ms
FROM sys.dm_os_wait_stats;

所需的权限

查询动态管理视图或函数需要对于对象具有 SELECT 权限以及 VIEW SERVER STATE 或 VIEW DATABASE STATE 权限。 这样您可以有选择地限制用户或登录名对动态管理视图和函数的访问。 为此,请先创建用户,master然后拒绝用户对不希望他们访问的动态管理视图或函数标准版LECT 权限。 之后,无论用户的数据库上下文如何,用户都无法从这些动态管理视图或函数中进行选择。

注意

由于 DENY 的优先级高,所以如果用户被授予 VIEW SERVER STATE 权限但被拒绝 VIEW DATABASE STATE 权限,则该用户只能查看服务器级别信息,但不能查看数据库级别信息。

本节内容

动态管理视图和函数划分为以下类别。