SqlServer实用系统视图,你了解多少?
SqlServer实用系统视图,你了解多少?
- 前言
- master..spt_values
- sysdatabases
- sysprocesses
- 一套组合拳
- sysobjects
- sys.all_objects
- syscolumns
- systypes
- syscomments
- sysindexes
- 结束语
前言
在使用任何数据库软件的时候,该软件都会提供一些可能不是那么公开,但很多人都知道的一些系统表或系统视图,了解这些内容,有助与我们日常工作中的一些特殊需求。本文介绍一些老顾所常用的SqlServer的系统视图给大家。
master…spt_values
实用程度 ⭐️⭐️⭐️
重要程度 💡
这是一个干什么用的视图,其实老顾并不是很清楚,但是,这个视图里,有很多很多纯数字的数据,在 number 这一列。

而如果将 type 限定为 p ,则会出现一个 0-2047 的连续数字列。。。。

如此。。。我们可以很方便的用 cross apply 的方式进行数据填充、补全,或者直接用这个 number 生成连续的日期等,总之,可以用数学计算完成的一些连续数据,都可以用这个方式直接生成了。
sysdatabases
实用程度 ⭐️
重要程度 💡
这个视图列举了当前数据库实例中的所有数据库的一些基本信息,比如数据库名,对应id,创建时间等,这个视图中最重要的其实是最后两列,filename和version,分别列出了存储路径和数据库版本。

为什么老顾会把这个不太常用的系统视图拿出来呢,因为曾经碰到过一个小伙伴,在比较新的 mssql 2019 中附加了 mssql 2012 的数据库,结果小伙伴没注意啊,直接按照 2019的格式去添加了存储过程,结果怎么都不能用,就是因为没有注意版本问题。嗯版本变更也很简单,看下图,一眼就明白

老顾使用的数据库版本已经比较老了。。。木钱啊
sysprocesses
实用程度 ⭐️⭐️⭐️⭐️⭐️
重要程度 💡💡💡💡
这是一个很重要的系统视图,他列举了当前正在运行的所有数据库线程的运行情况,非常重要的一个实时的反馈信息。

其中的 blocked 列,就是表示出现了状态锁了,而数据就是锁信息所在的 spid。而这个视图中还有一列 sql_handle,我们可以通过 系统函数 sys.dm_exec_sql_text 将其直接转换成可读的 sql 指令,嗯,也有可能是触发器或存储过程之类的。方便我们进行各种追踪。
非常推荐各位去熟悉这个视图。各位在百度里搜索到的一些关于高消耗、进程锁啦,可以看到,基本都指向了这个视图。优化数据库工作,这个视图是不可忽略的一部分参考内容。
一套组合拳
sysobjects
实用程度 ⭐️⭐️⭐️⭐️
重要程度 💡💡💡
一个以对象为内容的信息视图,列出了当前数据(注意,我这里说的是当前数据库哦。)中锁包含的各种对象。

其中 name 是对象名称,xtype 是对象类型。
然后有人告诉我,xtype 看不懂啊,他是什么类型?于是很多小伙伴去百度查 xtype 。。。。其实没必要哦,下一个视图你值得拥有。
sys.all_objects
实用程度 ⭐️
重要程度 💡
额。。。也许有人对这个评价有不同意见。。。但老顾用这个视图,其实就是为了翻译 xtype 。。。。

sys.all_objects 获得的数据,其实是全数据库实例的数据,而结合 sysobjects ,则可以只列当前数据库的内容了,然后把 type_desc 列出来,不就知道 xtype 是干嘛的了,这个对象到底是个什么东西了么?为什么要去百度查 xtype 呢?
select type_desc,o.* from sysobjects o
inner join sys.all_objects a on o.id=a.object_id

syscolumns
实用程度 ⭐️⭐️
重要程度 💡💡💡
这是一个列出当前数据库中,所有表的字段信息的视图,包含了列名,列类型 xtype(。。。。又见xtype,嘿嘿,这个可不能和 all_objects 一起用了,这个一会讲怎么翻译出来),列所在索引colorder(不是color der,是 col order哦),字段默认值信息,以及重要的信息 id。这里的 id 可不是字段的 id 哦,而是所属对象的 id,也就是表或者视图的 id,通过 object_name(id) 就可以得到所属对象的名字了。反正这个视图里杂七杂八的东西还真不少。但如果不考虑动态生成指令以及自动分发数据的话,其实这个视图用的还是比较少的。

systypes
实用程度
重要程度 💡
嗯,没啥用,就是翻译 syscolumns xtype 用的一个类型视图,包含自定义数据类型的,这个可以放心

syscomments
实用程度 ⭐️⭐️⭐️⭐️
重要程度 💡💡💡
前边。。我们已经可以通过 sysobjects 找到很多内容了,比如 tr 就是触发器,p就是存储过程了,这个时候,我们要查看触发器或存储过程的内容怎么办?难道要一个一个打开修改才能看到?No No No,syscomments 你值得拥有。
select *
from sysobjects o
inner join syscomments c on c.id=o.id
where xtype='p'

可以看到,text 列就已经把内容列出来了,唯一需要注意的是,可能有的内容过长,他会分成多行显示,你需要自己再用 for xml 之类的方法,给他拼到一起才是完整内容哦。
用这个 syscomments 就很方便的能检测到,某些数据的变动会影响到哪些触发器或存储过程了。
嗯,其实。。。。syscolumns 的描述,默认值之类的,也在这个 syscomments 里,有兴趣的可以自己翻翻看
sysindexes
实用程度 ⭐️
重要程度 💡💡
这个视图则是当前数据库的索引信息了,老顾对这个视图最常用的是查所有表的数据一共有多少,也就是 indid = 1 时,rows 的信息了

结束语
其实,还有很多很多的系统视图,诸如 sys.tables、sysfiles、sys.dm_exec_query_stats之类的,老顾平时用不到,不太熟悉,也许会有一些遗漏,还请见谅。
基本上以上这些视图熟悉了,就可以完成以前所无法完成的一些内容,比如动态生成 sql 时的列,就可以通过 syscolumns 来生成,数据类型可以通过 xtype 来校验,甚至默认值还可以用 syscomment 来自动填充了。就如同老顾在《使用一个存储过程完成数据插入和更新(使用xml)(通用insert和update)(mssql2008以上)》里的使用一样,通过系统视图,完成一些可自动化的东西,很是惬意哦。

如果真的特别对这些内容感兴趣,可以自行通过 master 库的 sysobjects 查看,并验证哦。
相关文章:
SqlServer实用系统视图,你了解多少?
SqlServer实用系统视图,你了解多少?前言master..spt_valuessysdatabasessysprocesses一套组合拳sysobjectssys.all_objectssyscolumnssystypessyscommentssysindexes结束语前言 在使用任何数据库软件的时候,该软件都会提供一些可能不是那么公…...
NodeJS Cluster模块基础教程
Cluster简介 默认情况下,Node.js不会利用所有的CPU,即使机器有多个CPU。一旦这个进程崩掉,那么整个 web 服务就崩掉了。 应用部署到多核服务器时,为了充分利用多核 CPU 资源一般启动多个 NodeJS 进程提供服务,这时就…...
[C++笔记]vector
vector vector的说明文档 vector是表示可变大小数组的序列容器(动态顺序表)。就像数组一样,vector也采用连续的存储空间来储存元素。这就意味着可以用下标对vector的元素进行访问,和数组一样高效。与数组不同的是,它的大小可以动态改变——…...
Python 迁移学习实用指南:1~5
原文:Hands-On Transfer Learning with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心如…...
【CSS重点知识】属性计算的过程
✍️ 作者简介: 前端新手学习中。 💂 作者主页: 作者主页查看更多前端教学 🎓 专栏分享:css重难点教学 Node.js教学 从头开始学习 ajax学习 标题什么是计算机属性确定声明值层叠冲突继承使用默认值总结什么是计算机属性 CSS属性值的计算…...
Java避免死锁的几个常见方法(有测试代码和分析过程)
目录 Java避免死锁的几个常见方法 死锁产生的条件 上死锁代码 然后 :jstack 14320 >> jstack.text Java避免死锁的几个常见方法 Java避免死锁的几个常见方法 避免一个线程同时获取多个锁。避免一个线程在锁内同时占用多个资源,尽量保证每个锁…...
go binary包
binary包使用与详解 最近在看一个第三方包的库源码,bigcache,发现其中用到了binary 里面的函数,所以准备研究一下。 可以看到binary 包位于encoding/binary,也就是表示这个包的作用是编辑码作用的,看到文档给出的解释…...
CompletableFuture使用详解(IT枫斗者)
CompletableFuture使用详解 简介 概述 CompletableFuture是对Future的扩展和增强。CompletableFuture实现了Future接口,并在此基础上进行了丰富的扩展,完美弥补了Future的局限性,同时CompletableFuture实现了对任务编排的能力。借助这项能力…...
4.15--设计模式之创建型之责任链模式(总复习版本)---脚踏实地,一步一个脚印
一、什么是责任链模式: 责任链模式属于行为型模式,是为请求创建了一个接收者对象的链,将链中每一个节点看作是一个对象,每个节点处理的请求均不同,且内部自动维护一个下一节点对象。 当一个请求从链式的首端发出时&a…...
STM32+W5500实现以太网通信
STM32系列32位微控制器基于Arm Cortex-M处理器,旨在为MCU用户提供新的开发自由度。它包括一系列产品,集高性能、实时功能、数字信号处理、低功耗/低电压操作、连接性等特性于一身,同时还保持了集成度高和易于开发的特点。本例采用STM32作为MC…...
全网最详细,Jmeter性能测试-性能基础详解,终成测试卷王(一)
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 发起请求 发起HTTP…...
人工智能概述
一、人工智能发展必备三要素 算法 数据 算力 CPU、GPU、TPU 计算力之CPU、GPU对比: CPU主要适合I\O密集型任务GPU主要适合计算密集型任务 什么样的程序适合在GPU上运行? 计算密集型的程序 所谓计算密集型(Compute-intensive)的程序,就是…...
API接口安全—webservice、Swagger、WEBpack
API接口安全—webservice、Swagger、WEBpack1. API接口介绍1.1. 常用的API接口类1.1.1. API接口分类1.1.1.1. 类库型API1.1.1.2. 操作系统型API1.1.1.3. 远程应用型API1.1.1.4. WEB应用型API1.1.1.5. 总结1.1.2. API接口类型1.1.2.1. HTTP类接口1.1.2.2. RPC类接口1.1.2.3. web…...
从前M个字母中取N个的无重复排列 [2*+]
目录 从前M个字母中取N个的无重复排列 [2*+] 程序设计 程序分析 从前M个字母中取N个的无重复排列 [2*+] 输出从前M个字母中取N个的无重复字母排列 Input 输入M N 1<=M=10, N<=M Output 按字典序输出排列 Sample Input 4 2 Sample Output A B A C A D B A B C B …...
ES forceMerge 强制段合并为什么会提升检索性能?
根据以前的测试,forceMerge段合并,将段的个数合并成一个。带来了将近一倍的性能提升,测试过程文档(请参考我的另外一篇文章):ES优化实战- forceMerge搜索提升测试报告_es forcemerge_水的精神的博客-CSDN博…...
macOS Ventura 13.3.1 (22E261) Boot ISO 原版可引导镜像
本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Windows 和 Linux 中创建可引导介质。 macOS Ventura 13.3.1 为 Mac 提供下…...
html+css+JavaScript+json+servlet的社区系统(手把手教学)
目录 课前导读: 一、系统前期准备 二、前端代码的编写 三、登陆页面简介 四、注册页面 五、社区列表页 六、社区详情页 七、社区发帖页 八、注销 九、访问链接 登陆页面http://175.178.20.77:8080/java106_blog_system/login.html 总结: 课前…...
UI Toolkit(1)
UI ToolkitUI Toolkit界面画布设置背景制作UI布局UI Toolkit界面 在Unity 2021LTS版本之后UI Toolkit也被内置在Unity中,Unity有意的想让UI Toolkit 成为UI的主要搭建方式,当然与UGUI相比还是有一定的差别。他们各有有点,这次我们就开始介绍…...
vLive带你走进虚拟直播世界
虚拟直播是什么? 虚拟直播是基于5G实时渲染技术,在绿幕环境下拍摄画面,通过实时抠像、渲染与合成,再推流到直播平台的一种直播技术。尽管这种技术早已被影视工业所采用,但在全民化进程中却是困难重重,面临…...
初谈 ChatGPT
引子 最近,小编发现互联网中的大 V 突然都在用 ChatGPT 做宣传:“ChatGPT不会淘汰你,能驾驭ChatGPT的人会淘汰你”、“带领一小部分人先驾驭ChatGPT”。 确实,ChatGPT这个新生事物,如今被视为蒸汽机、电脑、iPhone 般的…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
