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 般的…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...

C++--string的模拟实现
一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现,其目的是加强对string的底层了解,以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量,…...
JS红宝书笔记 - 3.3 变量
要定义变量,可以使用var操作符,后跟变量名 ES实现变量初始化,因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符,可以创建一个全局变量 如果需要定义…...

链式法则中 复合函数的推导路径 多变量“信息传递路径”
非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y)) 来全面说明。我们会展示其全微分形式(偏导…...