一、了解系统视图

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。然后附加这个copy就好了。

  

附加成功后,查看附加的数据库的视图,,这些view并不是在" 系统视图 " 文件夹下面的,而是正真的作为用户视图。

  

2、系统view的数据源

既然是view,其实它就是虚表,既然是虚表,那基础表在何处?来看一下我们的用户数据库。系统表 是空的。

  

可以看到,上面的 系统基表是空的,那在这个DB中的system view从哪查找的数据?因为没看到不代表真的没有,可以用system view来祝我们一臂之力,接下来用 个系统表

  

SqlServer 之 系统视图的更多相关文章

  1. SQLServer系统视图sysobjects中type字段说明

    SQLServer中系统视图sysobjects中type字段的对象类型: AF = 聚合函数 (CLR) C = CHECK 约束 D = DEFAULT(约束或独立) F = FOREIGN KE ...

  2. SQLSERVER系统视图,系统表,sys.sql_modules视图

    SQLServer中提供了相当丰富的系统视图,能够从宏观到微观,从静态到动态反应数据库对象的存储结果.系统性能.系统等待事件等等.同时 也保留了与早期版本兼容性的视图,主要差别在于SQLServer2 ...

  3. vs2015中SQLSERVER数据库项目引用系统视图

    近期使用VS中的SQLSERVER数据库项目进行项目开发,由于有很多自动化脚本会访问系统视图,例如sysobjects之类的,在项目中的脚本总是提示无法解析的引用,解决办法如下: 添加数据库引用 添加 ...

  4. Sqlserver 系统视图简单说明

    1. 查看系统视图的sql语句 select * from sys.system_views 2. 查看所有的 dynamic management 视图的sql select * from sys. ...

  5. SQLSERVER系统视图 sql server系统表详细说明

    参考 https://www.cnblogs.com/luluping/archive/2012/11/05/2754639.html https://www.cnblogs.com/litubin/ ...

  6. SQLSERVER中常用的系统视图

    QLServer中提供了相当丰富的系统视图,能够从宏观到微观,从静态到动态反应数据库对象的存储结果.系统性能.系统等待事件等等.同时 也保留了与早期版本兼容性的视图,主要差别在于SQLServer20 ...

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

    本来想这个系列写点什么好呢,后来想想大家作为程序员,用的最多的莫过于数据库了,但是事实上很多像我这样工作在一线的码农,对sql 都一知半解,别谈优化和对数据库底层的认识了,我也是这样... 一:那些系 ...

  8. sqlserver2008 数据库中查询存储过程的的创建修改和执行时间,以及比较常见的系统视图和存储过程

    因为各种原因数据库中存在大量无用的存储过程,想查询存储过程的最后执行情况,处理长期不使用的存储过程 下面这条语句可以查询存储过程创建 修改和执行的最后时间: SELECT a.name AS 存储过程 ...

  9. PostgreSQL-系统表、系统视图

    系统表显示的都是当前操作数据库下的信息,对象都来自当前数据库.因为不同的系统表都用不同名的字段来记录不同对象的oid,这个表引用那个表,那个表又引用另一个表,所以这些字段名不太好记. pg_class ...

随机推荐

  1. the elements of computing systems 的读书笔记1

    想转职程序猿,还真不是说懂一门语言就够的了,想要继续进步,必须懂其相关实现原理,比如这些底层的构造.最近看的就是这一本计算机入门级的书,但是对我这个纯自学的人来说真是能学到很多. 这本书从最基本的Na ...

  2. C++之lambda理解

    简介 在C++ Primer中,是这样定义的-一个lambda表达式表示一个可调用的代码单元,可以将其理解为一个未命名的内联函数:与任何函数类似,一个lambda具有一个返回类型,一个参数列表和一个函 ...

  3. JAVA读入挂

    队友扒的uwi的读入挂,非常强,再也不用担心java比C++慢了-- import java.util.*; import java.math.*; import java.io.ByteArrayI ...

  4. python知识(2)----python的多态

    python不支持多态,但他是一种多态语言,看下面这篇博客: 参考资料: [1]. 再谈python中的多态

  5. mysql文件目录详解 LINUX

    http://www.cnblogs.com/yjf512/archive/2012/12/11/2813398.html

  6. 游戏编程之Unity常用脚本类的继承关系

    前言学习Unity开发引擎的初学者会接触大量的脚本类,而这些类之间的关系往往容易被忽略.本文对Unity引擎开发中的一些常用类及其关系进行了简单的归纳总结. 博文首发地址:http://tieba.b ...

  7. Android SDK目录及版本号区别

    来自:http://www.2cto.com/kf/201604/496917.html 今天又有人问Tools,Build-Tools,Platform-tools有什么区别,是干嘛的? 现在对SD ...

  8. 算法:四种冒泡排序(Bubble Sort)实现

    背景 大学关于排序的算法,好像就学会了冒泡排序,这个算是排序界的 hello,world 了,冒泡排序的定义如下: 重复的遍历数组. /// <summary> /// 重复的遍历数组. ...

  9. bat薪酬

    三大互联网巨头公司,百度腾讯跟阿里如何划分级别?薪资待遇又有多少?除非身居其位,否则很难探知,但是等你到那个位置知道了,却又不能说,至少不能在公 开场合谈论.接下来就为大家揭秘,百度.阿里与腾讯内部的 ...

  10. 让Mac风扇面对PD不再疯狂

    对于所有喜欢Mac操作系统的用户来说,如果办公环境必须使用Windows及Windows程序,那一定会非常崩溃,因为你很可能使用了Parallels Desktop来运行你的Windows虚拟机,那么 ...