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

这篇具有很好参考价值的文章主要介绍了SqlServer实用系统视图,你了解多少?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在使用任何数据库软件的时候,该软件都会提供一些可能不是那么公开,但很多人都知道的一些系统表或系统视图,了解这些内容,有助与我们日常工作中的一些特殊需求。本文介绍一些老顾所常用的SqlServer的系统视图给大家。

master…spt_values

实用程度 ⭐️⭐️⭐️
重要程度 💡

这是一个干什么用的视图,其实老顾并不是很清楚,但是,这个视图里,有很多很多纯数字的数据,在 number 这一列。
SqlServer实用系统视图,你了解多少?
而如果将 type 限定为 p ,则会出现一个 0-2047 的连续数字列。。。。
SqlServer实用系统视图,你了解多少?
如此。。。我们可以很方便的用 cross apply 的方式进行数据填充、补全,或者直接用这个 number 生成连续的日期等,总之,可以用数学计算完成的一些连续数据,都可以用这个方式直接生成了。

sysdatabases

实用程度 ⭐️
重要程度 💡

这个视图列举了当前数据库实例中的所有数据库的一些基本信息,比如数据库名,对应id,创建时间等,这个视图中最重要的其实是最后两列,filename和version,分别列出了存储路径和数据库版本。
SqlServer实用系统视图,你了解多少?
为什么老顾会把这个不太常用的系统视图拿出来呢,因为曾经碰到过一个小伙伴,在比较新的 mssql 2019 中附加了 mssql 2012 的数据库,结果小伙伴没注意啊,直接按照 2019的格式去添加了存储过程,结果怎么都不能用,就是因为没有注意版本问题。嗯版本变更也很简单,看下图,一眼就明白
SqlServer实用系统视图,你了解多少?
老顾使用的数据库版本已经比较老了。。。木钱啊

sysprocesses

实用程度 ⭐️⭐️⭐️⭐️⭐️
重要程度 💡💡💡💡

这是一个很重要的系统视图,他列举了当前正在运行的所有数据库线程的运行情况,非常重要的一个实时的反馈信息。
SqlServer实用系统视图,你了解多少?
其中的 blocked 列,就是表示出现了状态锁了,而数据就是锁信息所在的 spid。而这个视图中还有一列 sql_handle,我们可以通过 系统函数 sys.dm_exec_sql_text 将其直接转换成可读的 sql 指令,嗯,也有可能是触发器或存储过程之类的。方便我们进行各种追踪。

非常推荐各位去熟悉这个视图。各位在百度里搜索到的一些关于高消耗、进程锁啦,可以看到,基本都指向了这个视图。优化数据库工作,这个视图是不可忽略的一部分参考内容。

一套组合拳

sysobjects

实用程度 ⭐️⭐️⭐️⭐️
重要程度 💡💡💡

一个以对象为内容的信息视图,列出了当前数据(注意,我这里说的是当前数据库哦。)中锁包含的各种对象。
SqlServer实用系统视图,你了解多少?
其中 name 是对象名称,xtype 是对象类型。

然后有人告诉我,xtype 看不懂啊,他是什么类型?于是很多小伙伴去百度查 xtype 。。。。其实没必要哦,下一个视图你值得拥有。

sys.all_objects

实用程度 ⭐️
重要程度 💡

额。。。也许有人对这个评价有不同意见。。。但老顾用这个视图,其实就是为了翻译 xtype 。。。。
SqlServer实用系统视图,你了解多少?
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

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

syscolumns

实用程度 ⭐️⭐️
重要程度 💡💡💡

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

systypes

实用程度
重要程度 💡

嗯,没啥用,就是翻译 syscolumns xtype 用的一个类型视图,包含自定义数据类型的,这个可以放心
SqlServer实用系统视图,你了解多少?

syscomments

实用程度 ⭐️⭐️⭐️⭐️
重要程度 💡💡💡

前边。。我们已经可以通过 sysobjects 找到很多内容了,比如 tr 就是触发器,p就是存储过程了,这个时候,我们要查看触发器或存储过程的内容怎么办?难道要一个一个打开修改才能看到?No No No,syscomments 你值得拥有。

select * 
from sysobjects o
inner join syscomments c on c.id=o.id
where xtype='p'

SqlServer实用系统视图,你了解多少?
可以看到,text 列就已经把内容列出来了,唯一需要注意的是,可能有的内容过长,他会分成多行显示,你需要自己再用 for xml 之类的方法,给他拼到一起才是完整内容哦。

用这个 syscomments 就很方便的能检测到,某些数据的变动会影响到哪些触发器或存储过程了。

嗯,其实。。。。syscolumns 的描述,默认值之类的,也在这个 syscomments 里,有兴趣的可以自己翻翻看

sysindexes

实用程度 ⭐️
重要程度 💡💡

这个视图则是当前数据库的索引信息了,老顾对这个视图最常用的是查所有表的数据一共有多少,也就是 indid = 1 时,rows 的信息了
SqlServer实用系统视图,你了解多少?

结束语

其实,还有很多很多的系统视图,诸如 sys.tables、sysfiles、sys.dm_exec_query_stats之类的,老顾平时用不到,不太熟悉,也许会有一些遗漏,还请见谅。

基本上以上这些视图熟悉了,就可以完成以前所无法完成的一些内容,比如动态生成 sql 时的列,就可以通过 syscolumns 来生成,数据类型可以通过 xtype 来校验,甚至默认值还可以用 syscomment 来自动填充了。就如同老顾在《使用一个存储过程完成数据插入和更新(使用xml)(通用insert和update)(mssql2008以上)》里的使用一样,通过系统视图,完成一些可自动化的东西,很是惬意哦。

SqlServer实用系统视图,你了解多少?
如果真的特别对这些内容感兴趣,可以自行通过 master 库的 sysobjects 查看,并验证哦。文章来源地址https://www.toymoban.com/news/detail-411812.html

到了这里,关于SqlServer实用系统视图,你了解多少?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java中的异常你了解多少?

    在Java中,我们将程序执行过程中发生不正常的情况称为异常 。 我们先看下面这行代码,我们将字符串赋值给了字符类型的s,由我们所学习的知识来判断,这肯定是不能通过的。 接下来我们来简单了解几种异常: 1.算数异常 2.数组越界异常 3.空指针异常 由图可以看出 1.Thr

    2024年02月04日
    浏览(35)
  • 关于 open ai,你了解多少?

    OpenAI 的历史 第一阶段:2015-2018 年 2015 年,埃隆·马斯克、山姆·阿尔特曼、彼得·蒂尔和杰西卡·利文斯顿联合创立了 OpenAI。 OpenAI 的目标是开发安全、有益的 AGI,并确保其造福全人类。 在这一阶段,OpenAI 主要专注于基础研究,并在强化学习、自然语言处理和计算机视觉等

    2024年01月22日
    浏览(33)
  • web接口开发与测试——你了解多少

    目录 前言 Django快速开发之投票系统 编写接口文档 系统接口测试 总结: 最近一直在学习和整理web开发与接口测试的相关资料。接口测试本身毫无任何难度,甚至有很多工具和类库来帮助我们进行接口测试。大多测试人员很难深入了解web接口测试的原因是对web开发不太了解,

    2024年02月12日
    浏览(29)
  • C语言:Strlen()函数你了解多少?

    C语言中strlen是一种函数,主要用于计算字符串的长度。 🚩 strlen()从字符串的开头位置依次往后面计数,直到遇到‘\\0’停止,所计算的字符串大小为‘\\0’以前的字符所计算的值,最终的字符串长度不包括‘\\0’ 🚩 strlen因为是一种函数,因此调用这个函数需要引用的头文

    2024年02月06日
    浏览(64)
  • 当下火爆出圈的 ChatGPT ,你了解多少?

    当下 AI 聊天程序 ChatGPT 可谓如火如荼,因它给出的答案通常更为合理且更有人情味,全网讨论度非常高。 ChatGPT 是什么? ChatGPT 是由 OpenAI 公司在 2022 年 11 月 30 日发布的一款全新聊天机器人模型,使用了包含自然语言处理(NLP)、机器学习和深度学习等最先进的人工智能技

    2024年02月01日
    浏览(58)
  • 想要做数藏的,你了解了多少呢?

    首先,数字藏品是虚拟物品,是独一无二且无法被复制的限量品。一般来说,数字藏品是诸如数字艺术品、视频片段或数字交易卡等视觉元素,理论上可以是诸如数字唱片等用数字1或0所表示的任何东西。 数字藏品是使用区块链技术,对应特定的作品,艺术品生成的唯一数字

    2024年01月21日
    浏览(28)
  • 【JAVA】关于接口你又了解多少呢?

    个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 Java接口是一种抽象数据类型,用于定义类必须遵守的方法,但不包含任何实现。它通常用来定义一组操作,并将这些操作作为合同提供给其它代码。今天让我们进一步学习关于JAVA接口的知识。 接口是一种规范或协议,

    2024年02月08日
    浏览(25)
  • 这些常用的IC专业术语,你了解多少?

    IC工程师在日常的学习和工作中或多或少会都遇到一些专业的IC词汇。下面就来为大家盘点一下各个岗位的专业高频名词。 (文档内持续更新,全文档文末可领) CIN (Carry INput) :进位输入 COUT(Carry OUTput) :进位输出 counter top :顶层 Binary :进制数,一种只有0和1两个数字的数制

    2024年02月08日
    浏览(29)
  • 关于服务连接器(Servlet)你了解多少?

    Servlet是JavaWeb最为核心的内容,它是Java提供的一门 动态 web资源开发技术。 使用Servlet就可以实现,根据不同的登录用户在页面上动态显示不同内容。 Servlet是JavaEE规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由web服务器运行Servlet 介绍完Servlet是

    2024年01月18日
    浏览(31)
  • SPSS----加权回归分析你了解多少(随笔笔记)

    spss统计分析书中这样写到: 在线性回归模型中,有一个同方差性假设,就是要求所有观测对回归模型的变异具有相同的贡献,以此为基础的回归方法称之为普通最小二乘法(OLS)。当因某些观测的变异较其他观测大而导致样本的方差不等时,就不能使用OLS方法了。如果观测的变

    2024年02月05日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包