SQL Server里头系统视图到底都包含了哪些具体的视图内容呢?
- 问答
- 2026-01-11 06:01:07
- 3
根据微软官方文档“系统视图(Transact-SQL)”中的分类,系统视图可以分为二十多个类别,每个类别下都包含了许多具体的视图,用来查看数据库各个方面的信息,这些视图就像是数据库提前为你准备好的问题答案清单,你只需要查询对应的视图就能得到信息,而不用去直接翻看底层复杂的系统表。
关于SQL Server实例级别的视图,也就是目录视图,这些视图提供了整个数据库服务器层面的信息,你想知道这个SQL Server实例上到底创建了哪些数据库,每个数据库的创建时间、兼容性级别是什么,你可以查询sys.databases视图,如果你想查看所有数据库中的表,可以使用sys.tables视图;查看所有列信息用sys.columns;查看存储过程用sys.procedures,这些视图的名字通常很直观,像sys.views就是所有视图,sys.indexes就是所有索引,它们返回的信息非常详细,例如查询sys.databases,你不仅能得到数据库的名字,还能看到它的状态、恢复模式、大小、排序规则等几十个属性。
关于动态管理视图和动态管理函数,官方文档将它们归为一类,这些视图和函数主要用来查看服务器的实时运行状态和内部信息,对于排查性能问题特别有用。sys.dm_exec_connections可以告诉你当前有哪些连接连到了数据库服务器上,它们的登录名、客户端IP地址是什么。sys.dm_exec_sessions则显示了所有活跃的会话,包括每个会话正在执行的命令、消耗的CPU和内存资源,当你觉得服务器变慢时,查询sys.dm_os_wait_stats可以知道系统在“等待”什么资源(比如等待磁盘I/O、等待锁),从而找到瓶颈,还有sys.dm_db_index_usage_stats,它能告诉你各个索引被使用了多少次,帮助你判断哪些索引是没用的可以删除。
第三类是信息架构视图,这类视图是遵循SQL标准定义的,目的是为了让不同数据库管理系统(比如SQL Server, MySQL)之间的查询语句有更好的一致性,它们的名字都以INFORMATION_SCHEMA开头。INFORMATION_SCHEMA.TABLES可以让你查看当前用户有权限访问的所有表;INFORMATION_SCHEMA.COLUMNS可以查看表的列信息,虽然它们提供的信息可能没有目录视图那么详尽,但胜在标准通用。

第四类是复制相关的视图,如果你的数据库配置了复制功能(比如将数据从一个服务器同步到另一个服务器),那么这类视图就非常重要了,它们分布在不同的数据库里:在发布服务器上,你可以通过sys.publications查看发布了哪些数据;在分发服务器上,通过sys.distribution_agents查看数据分发的代理程序状态;在订阅服务器上,通过sys.subscriptions查看订阅了哪些发布,这些视图帮助管理员监控复制的健康状况。
第五类是Integration Services相关的视图,当你在SQL Server中使用SSIS来设计和管理数据抽取、转换、加载包时,这些视图就派上用场了,在SSISDB目录数据库中,catalog.packages视图显示了所有部署的SSIS包,catalog.executions则显示了包的执行历史和状态。
第六类是Analysis Services相关的视图,这些视图用于查询SQL Server Analysis Services这个联机分析处理和数据挖掘工具的信息,它们同样是以一组视图的形式存在,供你查看SSAS服务器的元数据和运行状态。

第七类是数据库邮件视图,数据库邮件是SQL Server内置的邮件发送功能,相关的视图如sysmail_allitems记录了所有发送邮件的记录,sysmail_sentitems记录了已发送的邮件,sysmail_faileditems则记录了发送失败的邮件及其错误原因,方便排查问题。
第八类是维护计划视图,维护计划是用于自动化执行数据库备份、重建索引等维护任务的工具。sysmaintplan_开头的视图,例如sysmaintplan_log,就用来记录这些维护计划的执行日志。
第九类是扩展事件相关的视图,扩展事件是SQL Server一个强大的性能监控和故障诊断工具,像sys.dm_xe_sessions这样的动态管理视图可以让你监控扩展事件会话的运行状态。

第十类是数据层应用程序视图,DAC是一种用于简化数据库部署和管理的实体。dac_开头的视图,如msdb.dbo.sysdac_instances,就用来管理DAC实例的信息。
第十一类是全文搜索和语义搜索视图,如果你在数据库中使用了对文本内容进行关键词搜索的功能,那么sys.fulltext_开头的视图(如sys.fulltext_catalogs)和sys.semantic_开头的视图就包含了相关的配置和状态信息。
第十二类是PolyBase视图,PolyBase功能允许SQL Server查询Hadoop或Azure Blob Storage等外部数据源。sys.external_开头的视图,比如sys.external_tables,就用来管理这些外部表的定义。
第十三类是Filestream和FileTable视图,当你在数据库中存储大型文件(如文档、图片)时,可能会用到这些技术,相关的视图如sys.filetables可以查看所有FileTable的信息。
文档中还列出了其他一些类别,包括与更改数据捕获相关的视图(用于捕获数据变更)、基于策略管理的视图(用于管理策略)、查询存储相关的视图(用于追踪查询性能历史)、空间数据视图(用于地理信息数据)、临时表系统视图(用于临时表)等,每一个类别都对应着一组特定的视图,专门用来解决某一方面的问题。
SQL Server通过这套庞大而精细的系统视图体系,几乎将数据库的所有元数据、配置信息和实时状态都暴露给了用户,无论是想了解数据库的结构,还是监控其运行性能,或是管理高级功能,你都能找到对应的系统视图来获取所需的信息。
本文由黎家于2026-01-11发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://www.haoid.cn/wenda/78519.html
