Sql Server之旅——第一站 那些给我们带来福利的系统视图

 本来想这个系列写点什么好呢,后来想想大家作为程序员,用的最多的莫过于数据库了,但是事实上很多像我这样工作在一线的码农,对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
37
0
关注我
« 上一篇: Javascript之旅——终点站:困惑的settimeout
» 下一篇: Sql Server之旅——第二站 理解万恶的表扫描
posted @  2015-01-12 00:24  一线码农 阅读( 5536) 评论( 30编辑  收藏

  
#1楼 2015-01-12 01:35  下个路口   
这个系列好 加油 (来自博客园v3.0.1)
  
#2楼 2015-01-12 07:48  zhangjf_兔子   
这个系列得好好写写
  
#3楼 2015-01-12 08:32  KyrieYang   
有图有真相 一线黄越来越写得好了
  
#4楼 2015-01-12 10:26  花儿笑弯了腰   
这文章明显是在拉客的啊,哈哈。
  
#5楼 2015-01-12 10:26  李大菜鸟   
平时就知道用,还真没仔细研究过。 赞!
  
#6楼 [ 楼主2015-01-12 11:37  一线码农   
@ 下个路口
谢谢关注
  
#7楼 [ 楼主2015-01-12 11:38  一线码农   
@ zhangjf_兔子
是的,有这个必要。
  
#8楼 [ 楼主2015-01-12 11:38  一线码农   
@ bworling
群里的那个谁?
  
#9楼 [ 楼主2015-01-12 11:38  一线码农   
@ 花儿笑弯了腰
不拉客了。
  
#10楼 [ 楼主2015-01-12 11:38  一线码农   
@ 李大菜鸟
平时多考虑下就好了~
  
#11楼 2015-01-12 13:43  爱你不打烊   
关注下,平时都没有注意过那些系统表们。。。
  
#12楼 [ 楼主2015-01-12 13:44  一线码农   
@ 爱你不打烊
有疑惑了就可以关注下~
  
#13楼 2015-01-12 13:47  堕落魂伤   
不错不错!!!终于盼来大神关于SQL SERVER方面的文章!!!以解我多年的疑惑!!
  
#14楼 2015-01-12 13:49  宝児   
有图有真相 一线黄越来越写得好了
  
#15楼 2015-01-12 13:52  mounting   
有图有真相,一线黄 现在动态图越来越少了
  
#16楼 [ 楼主2015-01-12 13:54  一线码农   
@ 堕落魂伤
言重了吧。。。
  
#17楼 [ 楼主2015-01-12 13:55  一线码农   
@ 宝児
谢谢支持。
  
#18楼 2015-01-12 13:57  搁浅拾贝   
博主博爱啊!谢谢!
  
#19楼 [ 楼主2015-01-12 13:58  一线码农   
@ mounting
越来越少了?这个到没有关注变迁历史,谢谢提醒。
  
#20楼 2015-01-12 14:17  起个昵称真难   
涨姿势了。。。。。。。。。。。。
  
#21楼 2015-01-12 14:44  钻葛格   
非常喜欢楼主的文风,老早就偷偷关注了~感谢楼主分享,有空还写啊~
  
#22楼 [ 楼主2015-01-12 15:15  一线码农   
@ 钻葛格
过奖了,下篇很快跟进~
  
#23楼 [ 楼主2015-01-12 15:15  一线码农   
@ 起个昵称真难
会多少姿势了~
  
#24楼 [ 楼主2015-01-12 15:15  一线码农   
@ 搁浅拾贝
感谢关注~
  
#25楼 2015-01-12 15:49  金色海洋(jyk)阳光男孩   
挺好挺好,以前也没注意。
  
#26楼 2015-01-12 17:12  醉心   
相当期待这个系列!
  
#27楼 2015-01-12 17:47  剑走江湖   
挺好的,sql server 提供了很多的类型的试图:目录视图、兼容性视图、信息架构视图、复制视图、动态管理视图和函数以及数据层应用程序视图。
  
#28楼 2015-01-12 18:30  Wackysoft   
在查看存储过程那块有个简单的方法:
sp_helptext 存储过程名
就可以直接查看存储过程的内容
  
#29楼 2015-01-13 09:58  shoupifeng   
什么时候出第二篇啊,看完有点期待啊
  
#30楼 2015-01-29 10:25  kuangkro   
不得不赞一个
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值