SqlServer实用系统视图,你了解多少?

news2025/1/18 6:10:59

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 查看,并验证哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/415260.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小规模容器编排使用Docker Swarm不香么,用个锤子的kubernetes

文章目录一、Docker Swarm是什么?二、Swarmkit和Swarm Mode是什么?三、Docker Swarm的核心设计四、Docker Swarm安装部署4.1、初始化Swarm节点14.2、新节点加入Swarm集群4.3、使用swarm部署服务4.4、swarm集群管理一、Docker Swarm是什么? D…

“QT 快速上手指南“ 之 计算器(二)组件,坐标,窗口

文章目录前言一、QT 基本组件用法介绍:1. QLabel :2. QPushButton :3. QLineEdit:二、坐标系统三、窗口部件的大小设置1. setSize( ) 函数:2. resize( )函数:3. setFixedSize( )函数:4. setFixedWidth( ) 和 setFixedHeight( )函数…

标准化归一化方法

一、经典机器学习的归一化算法 分别是0-1标准化(Max-Min Normalization)和Z-Score标准化。 1.1 0-1标准化方法 每一列中的元素减去当前列的最小值,再除以该列的极差。 不过在深度学习领域,我们更希望输入模型的数据是Zero-Ce…

使用Serv-U搭建FTP服务器并公网访问【内网穿透】

文章目录1. 前言2. 本地FTP搭建2.1 Serv-U下载和安装2.2 Serv-U共享网页测试2.3 Cpolar下载和安装3. 本地FTP发布3.1 Cpolar云端设置3.2 Cpolar本地设置4. 公网访问测试5. 结语1. 前言 科技日益发展的今天,移动电子设备似乎成了我们生活的主角,智能手机…

这些IT行业趋势,将改变2023

上一周,你被"AI"刷屏了吗? 打开任何一家科技媒体,人工智能都是不变的热门话题。周初大家还在用ChatGPT写论文、查资料、写代码,到周末的时候大家已经开始用GPT-4图像识别来做饭、Microsoft 365 Copilot 来写PPT了。 GP…

【周末闲谈】AI的旅途

个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? ✨第二周 畅想AR 文章目录系列目录前言AIAI的开端第一个AI程序AI的寒冬关于AI的思考末尾前言…

憨批的语义分割重制版11——Keras 搭建自己的HRNetV2语义分割平台

憨批的语义分割重制版11——Keras 搭建自己的HRNetV2语义分割平台学习前言什么是HRNetV2模型代码下载HRNetV2实现思路一、预测部分1、主干网络介绍a、Section-1b、Section-2c、Section-3d、Section-42、特征整合部分3、利用特征获得预测结果二、训练部分1、训练文件详解2、LOSS…

【Python童年游戏】满满的回忆杀—那些年玩过的童年游戏你还记得吗?那个才是你的菜?看到第一个我就泪奔了(致我们逝去的青春)

导语 滴一一学生卡🙌 结伴上车的学生仔子们 用笑声打破车厢的沉默 大人眼里的晚高峰 是给放学后快乐😀时光的加时 下车的学生匆匆起身带起 一阵熟悉的栀子香于💓 是关于校园的记忆 开始零零散散地闪现 放学后集合的秘密基地/跟着城…

Half-UNet:用于医学图像分割的简化U-Net架构

Half-UNet简化了编码器和解码器,还使用了Ghost模块(GhostNet)。并重新设计的体系结构,把通道数进行统一。 论文动机 编码器的不同类型的架构图,编码器(A-C)的结构分别来源于U-Net的编码器、解码器和全的Unet结构。 下面是上图的一些结果指标…

4.2学习周报

文章目录前言文献阅读摘要介绍时间序列预测目前存在的问题时间序列预测方法分类未来方向时间序列预测总结前言 本周阅读文献《Forecast Methods for Time Series Data: A Survey》,本文主要对目前时间序列数据建模方法进行分类,主要分为了三类&#xff…

Linux->文件系统磁盘文件管理

目录 1 磁盘结构 2 逻辑抽象管理磁盘 2.1 逻辑抽象 2.2 管理磁盘 2.3 补充知识 3 软硬连接 1 磁盘结构 本篇的学习需要建立在大家在脑海中有一副磁盘的结构才能进行下去,所以我会以图解的方式为大家简单讲解一下,注:博主对这一部分并不是…

深度学习实战——卷积神经网络/CNN实践(LeNet、Resnet)

忆如完整项目/代码详见github:https://github.com/yiru1225(转载标明出处 勿白嫖 star for projects thanks) 系列文章目录 本系列博客重点在深度学习相关实践(有问题欢迎在评论区讨论指出,或直接私信联系我&#xf…

详细介绍别人电脑访问到自己电脑运行的项目

文章目录 让别人远程访问你的代码网站项目或临时演示你的项目给客户的方式详解 引言一、创建一个你想要别人访问的项目二、明确你想要将这个网站或者项目存放的地方 终端分类服务器设备WEB服务器三、部署我们的网页 本地部署流程进入浏览器输入网址访问获取本机的IP地址&#…

多模态特征融合:图像、语音、文本如何转为特征向量并进行分类

多模态特征融合前言输入层,数据集转为特征向量图像语音什么是时域信号,什么是频域信号语音信号转换 - 1.傅立叶变换语音信号转换 - 2.梅尔频率倒谱系数文本词袋模型词嵌入模型输出层,多模态模型合并前言 学习多模态的话题可以从深度学习的分…

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…

NLP与ChatGPT的碰撞:大模型和小模型联合发力

ChatGPT真的太火了!作为NLP的终结者,ChatGPT又会与NLP发生怎么样的碰撞?大模型可以替代小模型吗?NLP又将何去何从?今天给大家推荐一本好书:《基于NLP的内容理解》! 文章目录一、背景二、书籍介绍…

【原创】AIGC之ChatGPT工作原理

AIGC是什么 AIGC - AI Generated Content (AI生成内容),对应我们的过去的主要是 UGC(User Generated Content)和 PGC(Professional user Generated Content)。 AIGC就是说所有输出内容是通过AI机…

2023年3月的10篇论文推荐

三月有很多的重大产品发布,包括刚刚发布的GPT4,还有Meta刚发布就被泄露的LLaMA,midjourney V5,还有ChatGPT的API(非常便宜)等等。 但是本文整理的是本月应该阅读的10篇论文,将包括多模态语言模…

Linux中shell内外命令讲解(下)

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放&#xff0…

MySQL数据库:联合查询、子句查询、合并查询

一、联合查询 1.概念 简单理解就是将多张表合并到一起,然后进行数据查询,所有也叫多表联查。 如何将两张表合并到一起? 取两张表的笛卡儿积:将表1中的数据逐条与表2中的数据进行合并,最终形成的新的临时表&#xff0…