Sql Server之旅——第一站 那些给我们带来福利的系统视图
来源:互联网 发布:大连淘宝客服招聘 双休 编辑:程序博客网 时间:2024/04/28 00:47
本来想这个系列写点什么好呢,后来想想大家作为程序员,用的最多的莫过于数据库了,但是事实上很多像我这样工作在一线的码农,对sql
都一知半解,别谈优化和对数据库底层的认识了,我也是这样。。。
一:那些系统视图
1. 系统视图是干什么呢?
从名字上看就知道,系统视图嘛?猜的不错的话,就是存放一些sqlserver系统的一些信息,很好,恭喜你,答对了。
2. 都定义在哪呢?
为了让你眼见为实,下面截图看看,从截图中你可以看到,不管是“系统数据库”还是“用户数据库”都是有这些系统视图的,而且一眼扫下去发
现连名字都一样。
3.看看这些系统视图都能带给我什么福利?
Q1:我在维护一个系统的时候,我只知道有一个数据库中,有一个表的字段叫 “state”,但我忘了是定义在那张表中?我该如
何找出来?
A1: 这个简单,在sqlserver里面提供了一个系统视图叫“INFORMATION_SCHEMA.COLUMNS”,下面我们截图看看。
从这个系统视图名字中的这个SCHEMA这个单词可知,原来是一个保存表架构的视图,而且还有这个字段的“排位”,“默认值”这些特性,泥煤,
是不是有一种很爽的感觉???
Q2:我在C#代码中看到了一个存储过程名"CategoryInsert",我想看它的源码,但是我的table中存储过程有几千个,总不能让我
一个个的去找吧,,,拜托在系统视图中可有快捷的方法查看?
A2:so easy。。。告诉你吧,只有你想不到的,没有系统视图做不到,不就一个简简单单的看存储过程代码么?
sys.sql_modules就可以帮你实现。
Q3:这种方法好是好,但是copy的definition字段是没有格式化的。。。。大哥,上千行的sql哦。。。我特别想格式化的输
出怎么办呀?谢谢了。
A3:确实如你所说,格式化输出的话,系统View只能帮你到这了,不过天无绝人之路,你可以使用系统存储过程,里面有一个
神奇的sp_helptext,可以祝你实现梦想,不用谢。
二:对系统视图的一些思考
在上面的代码中,我演示了两个系统view,一个proc给我们带来的福利,那么仔细看一看,你就会有两个疑惑。。。。
1:系统View在哪定义的?
这个问题问的真好,从文章开头我们就知道,我的用户库MYPETSHOP是有很多系统view的,但是我真的没有定义这些view呀,老天可以
给我作证,那问题就很神秘了,system view到底从何而来?这个问题你也只有问sqlserver团队了,他们将system view都放入了一个隐藏
的resource数据库,那这个数据库在哪呢?我给你找到。
找到了之后,我现在继续附加进来,如果你够聪明的话,你不能直接加载它,否则会报进程正在使用中,原因我想你也知道。
解决方法也很简单,我们做一份copy到E盘。然后附加这个copy就好了。
既然附加进来了,我现在的感觉就是迫不及待的去看一看,细心的你通过下面的截图,我想你应该明白了些什么,这些view并不是在”系统视图“
文件夹下面的,而是正真的作为用户视图。。。对不对。。。
2:系统view的数据源在何处?
这个也是很经典的问题,既然是view,我想大家都明白,其实它就是虚表的意思,既然是虚表,那基础表在何处?带着这个问题我来翻一下
我的MYPETSHOP数据库。
可以看到,上面的系统基表空空如也,黄鹤一去不复返,白云千载空悠悠。。。那更大的疑问来了,如果连基础表都没有,那在这个DB中的
system view到底是查谁呢?这不是大忽悠么???但是事实是真的没有吗?因为你没看到不代表真的没有,可以继续用system view来祝我
们一臂之力,接下来用sys.objects一探究竟。。。
好了,大概就说这么多了,时候不早了,洗洗睡了。。。
» 下一篇:Sql Server之旅——第二站 理解万恶的表扫描
谢谢关注
是的,有这个必要。
群里的那个谁?
不拉客了。
平时多考虑下就好了~
有疑惑了就可以关注下~
言重了吧。。。
谢谢支持。
越来越少了?这个到没有关注变迁历史,谢谢提醒。
过奖了,下篇很快跟进~
会多少姿势了~
感谢关注~
sp_helptext 存储过程名
就可以直接查看存储过程的内容
- Sql Server之旅——第一站 那些给我们带来福利的系统视图
- Sql Server之旅——第一站 那些给我们带来福利的系统视图
- 程序员眼中的 SQL Server-非聚集索引能给我们带来什么?
- 镜花水月,过不留痕————铭记那些给我们带来进步的C语言小难题
- 镜花水月,过不留痕————铭记那些给我们带来进步的C语言小难题<2>
- Sql Server之旅——第五站 确实不得不说的DBCC命令(文后附年会福利)
- 嵌入式系统给我们带来了那些优势?嵌入式行业应用于哪方面
- android4.4 API 19 给开发者带来的新福利
- SQL Server 2000 ——系统表和系统视图
- SQL Server系统视图
- sql server系统视图
- Sql Server之旅——第三站 解惑那些背了多年聚集索引的人
- Sql Server之旅——第三站 解惑那些背了多年聚集索引的人
- SQL Server中有用的系统视图
- SQL Server之视图
- 大学课程能给我们带来什么?——“我们能从大学得到什么”
- 给大家带来一个福利app
- SQL Server ——视图
- 开始我的Android博客之旅
- sshpass实现ssh自动输入密码登陆服务器
- android 脑图
- Java实验(8) Location类
- 安卓aar build.gradle配置
- Sql Server之旅——第一站 那些给我们带来福利的系统视图
- svn: E155021: This client is too old to work with the working copy at
- Git add的时候报:cannot find xxxx/xxx/xx/gitconfig
- MySQL权限了解
- AngularJs 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
- Android的常用adb命令
- AM335x访问FPGA的问题
- redis-集群 入门
- SDWebImage原理基本使用