动态管理视图和函数 (Transact-SQL)

动态管理视图和函数返回可用于监视服务器实例的运行状况、诊断故障以及优化性能的服务器状态信息。

重要说明重要提示

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

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

  • 服务器范围内的动态管理视图和函数。 此类型需要具有该服务器的 VIEW SERVER STATE 权限。

  • 数据库范围内的动态管理视图和函数。 此类型需要具有该数据库的 VIEW DATABASE 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;

GO

所需的权限

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

注意注意

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

本节内容

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

AlwaysOn 可用性组动态管理视图和函数

与索引相关的动态管理视图和函数

与变更数据捕获相关的动态管理视图

与 I/O 相关的动态管理视图和函数

与更改跟踪相关的动态管理视图

与对象相关的动态管理视图和函数

与公共语言运行时相关的动态管理视图

与查询通知相关的动态管理视图

与数据库镜像相关的动态管理视图

与复制相关的动态管理视图

与数据库相关的动态管理视图

资源调控器动态管理视图

与执行相关的动态管理视图和函数

与安全相关的动态管理视图

扩展事件动态管理视图

与 Service Broker 相关的动态管理视图

Filestream 和 FileTable 动态管理视图 (Transact-SQL)

与 SQL Server 操作系统相关的动态管理视图

全文搜索和语义搜索动态管理视图

与事务相关的动态管理视图和函数

请参阅

参考

GRANT 服务器权限 (Transact-SQL)

GRANT 数据库权限 (Transact-SQL)

系统视图 (Transact-SQL)