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
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值