本来想这个系列写点什么好呢,后来想想大家作为程序员,用的最多的莫过于数据库了,但是事实上很多像我这样工作在一线的码农,对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之旅——第一站 那些给我们带来福利的系统视图的更多相关文章

  1. Sql Server之旅——第九站 看公司这些DBA们设计的这些复合索引

    这一篇再说下索引的最后一个主题,索引覆盖,当然学习比较好的捷径是看看那些大师们设计的索引,看从中能提取些什么营养的东西,下面我们看 看数据库中一个核心的Orders表. 一:查看表的架构 <1& ...

  2. Sql Server之旅——第二站 理解万恶的表扫描

    很久以前我们在写sql的时候,最怕的一件事情就是sql莫名奇妙的超级慢,慢的是撸一管子回来,那个小球还在一直转...这个着急也只有当事人才 明白,后来听说有个什么“评估执行计划“,后来的后来才明白应该 ...

  3. Sql Server之旅——第五站 确实不得不说的DBCC命令

    原文:Sql Server之旅--第五站 确实不得不说的DBCC命令 今天研发中心办年会,晚上就是各自部门聚餐了,我个人喜欢喝干红,在干红中你可以体味到那种酸甜苦辣...人生何尝不是这样呢???正好 ...

  4. (转)Sql Server之旅——第八站 复合索引和include索引到底有多大区别?

    索引和锁,这两个主题对我们开发工程师来说,非常的重要...只有理解了这两个主题,我们才能写出高质量的sql语句,在之前的博客中,我所说的 索引都是单列索引...当然数据库不可能只认单列索引,还有我这篇 ...

  5. 从0开始搭建SQL Server 2012 AlwaysOn 第一篇(AD域与DNS)

    随着业务发展,公司需要提高数据安全与性能需求,所以需要对新技术预研(先采坑),做技术积累: 了解相关AlwaysOn 故障转移集群(热备),数据路由(ICX),Moebius(莫比斯数据路由) 决定测 ...

  6. 程序员眼中的 SQL Server-非聚集索引能给我们带来什么?

    写在前面 最近在做的一个项目,页面访问的时候很慢(大概几秒钟的样子),然后用日志记录的方式,来排查这个问题,最后发现是 Entity Framework 初始化的一个坑(大概要花 6-7 秒),详见: ...

  7. SQL server学习(四)T-SQL编程之事务、索引和视图

    今天来分享下T-SQL高级编程中的事务.索引.视图,可以和之前的SQL server系列文章结合起来. 一.事务 事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个 ...

  8. Sql Server:创建用户并指定该用户只能看指定的视图,除此之外的都不让查看

    1,在sql server中选择好要操作的数据库 2,--当前数据库创建角色 exec sp_addrole 'seeview'      --创建了一个数据库角色,名称为:[seeview] 3,- ...

  9. Sql Server之旅——第十二站 sqltext的参数化处理

    说到sql的参数化处理,我也是醉了,因为sql引擎真的是一个无比强大的系统,我们平时做系统的时候都会加上缓存,我想如果没有缓存,就不会有什么 大网站能跑的起来,而且大公司一般会在一个东西上做的比较用心 ...

随机推荐

  1. 不可或缺 Windows Native (23) - C++: 虚函数

    [源码下载] 不可或缺 Windows Native (23) - C++: 虚函数 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 虚函数 示例1.基类CppHuman ...

  2. Android使用SAX解析XML(4)

    util.java文件如下: package com.hzhi.my_sax; import java.io.IOException; import java.io.InputStream; impo ...

  3. Firemonkey Bitmap 设定像素颜色 Pixel

    VCL 和 Firemonkey 的 Bitmap 处理像素的方式不相同,下例为将图片内不是「白色」的像素全部改成「黑色」: procedure TForm1.Button1Click(Sender: ...

  4. hibernate3

    hibernate3 (整合到spring中的core核心配置中的hibernate3) <!-- 基于hibernate的Session工厂 --> <bean id=" ...

  5. Scalaz(11)- Monad:你存在的意义

    前面提到了scalaz是个函数式编程(FP)工具库.它提供了许多新的数据类型.拓展的标准类型及完整的一套typeclass来支持scala语言的函数式编程模式.我们知道:对于任何类型,我们只需要实现这 ...

  6. PHP内核探索之变量(1)Zval

    作为数据的容器,我们常常需要跟变量打交道,不管这个变量是数字.数组.字符串.对象还是其他,因而可以说变量是构成语言的不可或缺的基础.本文是PHP内核探索之变量的第一篇,主要介绍zval的基本知识,包括 ...

  7. WinForm 窗体应用程序(初步)之一

    学习制作一个WinForm程序,有两样东西是需要首先掌握的.第一部分,我们称之为属性面板.无论是窗体还是控件,都有着自己的属性面板.第二部分,则是我们称之为控件的东西. 我们先来讨论一下属性面板.新建 ...

  8. css用背景图来替换文字来达到隐藏文字的目的

    根据html代码的不同来分成两大类方法,如下 html代码: <h1 class="replace-indent">hello see</h1> 第一种方法 ...

  9. Sortable – 简单灵活的 JavaScript 拖放排序插件

    当需要在网站中添加拖放排序功能的时候,jQuery UI 的排序组件可能是最流行的解决方案.今天给大家介绍另一款简单灵活的 JavaScript 拖放排序插件——Sortable,它使用 HTML5 ...

  10. 【web前端面试题整理06】成都第一弹,邂逅聚美优品

    前言 上周四回了成都,休息了一下下,工作问题还是需要解决的,于是今天去面试了一下,现在面试回来了,我感觉还是可以整理一下心得. 这个面试题整理系列是为了以后前端方面的兄弟面试时候可以得到一点点帮助,因 ...