SqlServer 之 系统视图

一、了解系统视图

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来祝我们一臂之力,接下来用 sys.objects 一探究竟。。。共有 45 个系统表

  

时间: 2024-07-30 04:10:23

SqlServer 之 系统视图的相关文章

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

SQLServer中系统视图sysobjects中type字段的对象类型: AF = 聚合函数 (CLR) C = CHECK 约束 D = DEFAULT(约束或独立) F = FOREIGN KEY 约束 FN = SQL 标量函数 FS = 程序集 (CLR) 标量函数 FT = 程序集 (CLR) 表值函数 IF = SQL 内联表值函数 IT = 内部表 P = SQL 存储过程 PC = 程序集 (CLR) 存储过程 PG = 计划指南 PK = PRIMARY KEY 约束 R =

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

近期使用VS中的SQLSERVER数据库项目进行项目开发,由于有很多自动化脚本会访问系统视图,例如sysobjects之类的,在项目中的脚本总是提示无法解析的引用,解决办法如下: 添加数据库引用 添加后系统即可识别master下的视图. 引用:https://stackoverflow.com/questions/9318144/database-project-in-vs-2010-cant-build-verify-script-with-sys-syscolumns

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

本来想这个系列写点什么好呢,后来想想大家作为程序员,用的最多的莫过于数据库了,但是事实上很多像我这样工作在一线的码农,对sql 都一知半解,别谈优化和对数据库底层的认识了,我也是这样... 一:那些系统视图 1. 系统视图是干什么呢? 从名字上看就知道,系统视图嘛?猜的不错的话,就是存放一些sqlserver系统的一些信息,很好,恭喜你,答对了. 2. 都定义在哪呢?  为了让你眼见为实,下面截图看看,从截图中你可以看到,不管是“系统数据库”还是“用户数据库”都是有这些系统视图的,而且一眼扫下去

Sqlserver 中系统表sysobjects、syscolumns以及函数object_id

1.sysobjects 系统对象表. 保存当前数据库的对象,如约束.默认值.日志.规则.存储过程等 sysobjects 重要字段解释: sysObjects ( Name sysname, --object 名称 id int, --object id xtype char(2), -- object 类型 type char(2), -- Object 类型(与xtype 似乎一模一样) uid smallint, -- object 所有者的ID ... --其他的字段不常用到. ) ?

机房收费系统——视图的运用

对于视图在一年前的数据库学习和自考中就学到了,那时只是理论学习,这次在机房收费系统重构中亲自实践,加深了对视图的理解. 定义: 从数据库系统外部来看,视图是用户从一个特定的角度来查看数据库中的数据.从数据库系统内部来看,视图是由SELECT语句组成的查询定义的虚拟表,在数据库中并不真实存在.好比在提高班有学术部,安全部,纪律部等等,这些部门就是视图,需要给哪个部门开会就通知哪个部门.这些部门的人都是提高班各个期的(基本表),并且每个人都是独一无二的. 操作: 由于视图只是存储的SQL Selec

SQLserver中的视图与主外键的创建

一.背景 原来学过数据库的相关内容,只是形式上的,从来也没有实践过,徐徐飘过而已,如今在做机房时,很多知识需要用到视图,才开始去慢慢的实践. 视图:我理解的就是一张表,它把我们所需要的某个表或某几个表中的部分信息提取出来,形成了一张临时的表. 它主要有两个优点:1.简单,它呈现给我们的数据就是我们想要的数据,没有多余的. 2.安全,提供给用户它们权限范围内的数据 我为什么会用到视图?举一个简单的例子,在查询用户信息时,我们可能会用到两张表中的内容.那么这个时候我就需要将两张表中我需要的数据提取出

sql server 系统表系统视图 及作用说明

sql server 系统视图,可分为: 目录视图   兼容性视图    动态管理视图和函数    信息架构视图    复制视图 系统表: sysaltfiles主数据库 保存数据库的文件 syscharsets主数据库字符集与排序顺序 sysconfigures主数据库 配置选项 syscurconfigs主数据库当前配置选项 sysdatabases主数据库服务器中的数据库 syslanguages主数据库语言 syslogins主数据库 登陆帐号信息 sysoledbusers主数据库 链

ORACLE主要的系统表和系统视图

ORACLE主要的系统表和系统视图 1.系统表 ORACLE数据库的系统参数都存储在数据库中,可以通过SQLPLUS,以用户SYS进行查询.几个重要的表或者视图如下: v$controlfile:控制文件的信息: v$datafile:数据文件的信息: v$log:日志文件的信息: v$process:处理器的信息: v$session:会话信息: v$transaction:事务信息: v$resource:资源信息: v$sga:系统全局区的信息. 上面的视图名中的‘v$’,只是视图名字中的

oracle系统视图

总结ORACLE系统视图及表大全: dba_开头..... dba_users 数据库用户信息 dba_segments 表段信息 dba_extents 数据区信息 dba_objects 数据库对象信息 dba_tablespaces 数据库表空间信息 dba_data_files 数据文件设置信息 dba_temp_files 临时数据文件信息 dba_rollback_segs 回滚段信息 dba_ts_quotas 用户表空间配额信息 dba_free_space数据库空闲空间信息 d