加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Sql Server 查看所有存储过程或视图的位置及内容

发布时间:2022-12-05 14:02:22 所属栏目:MsSql教程 来源:互联网
导读: 前一段时间,有个需求,就是对部分表进行了分库,所以,原库里面的存储过程、视图和函数里的表名等信息也要跟着更新,刚开始尝试手动检查了几个存储过程,可发现存储过程太多,检查起来效率

前一段时间,有个需求,就是对部分表进行了分库,所以,原库里面的存储过程、视图和函数里的表名等信息也要跟着更新,刚开始尝试手动检查了几个存储过程,可发现存储过程太多,检查起来效率很低,还容易出错,况且还有视图和函数,所以就想到了 Sql Server 内置的目录视图,找了一下,果然找到了解决办法:

use ReportServer$SQLSERVER
 
select a.name,a.[type],b.[definition] from sys.all_objects a,sys.sql_modules b 
where a.is_ms_shipped=0 and a.object_id = b.object_id and a.[type] in ('P','V','AF') 
order by a.[name] asc

从上面的SQL语句可以看出,主要用到了两个 sys.all_objects 和 sys.sql_modules 两个系统存储过程,其中sys.all_objects 是 sql server 2012 版本中的系统视图,在 更早期的 sql server 版本中,应该用sys.objects,同时,sys.objects 在 2012 中也是可以用的,只不过考虑到后续兼容性,在新版本中,用新的 name 还是比较好。

Sys.All_Objects(sys.objects)

该视图 很出名,是经常使用到的,主要是:显示所有架构范围内的用户定义对象和系统对象的 UNION

主要字段:

1. Name:对象名

2. Object_id:对象标识号,在数据中是唯一的

3. Principal_id :架构所有者ID

4. Parent_object_id:此对象所属对象的ID,0 = 不是子对象

5. Type:对象类型,常用的类型有,AF = 聚合函数P = SQL 存储过程 V = 视图 TT = 表类型 U = 表(用户定义类型)

6. Type_desc:对象类型的说明

7. Create_date / Modify_date :创建日期 / 修改日期

8. is_ms_shipped:是否为 内部 SQL Server 组建所创建的对象,常用来判断 是否是 系统内置或用户自定义 的对象

Sys.Sql_Modules

MSDN :对每个 SQL 语言定义的模块对象都返回一行。 类型为 P、RF、V、TR、FN、IF、TF 和 R 的对象均有关联的 SQL 模块。

该视图 不是太常用,但是要返回 某些对象的 创建信息,如一个表格的 架构、字段等信息,就需要用这视图了,稍后会在介绍字段后再介绍这个视图。

注意,该视图的作用域是当前 DB,并不是当前Server,所以使用前,一定注意前面加 use DBName 的信息

主要字段:

1.Object_id:对象标识号,在数据中是唯一的

2.Definition:用于定义此模块的 SQL 文本

其实只要大家亲自操作下,就很容易明白,Definition 中的内容,就和下图中的操作是一样的:

相关文章SqlServer 根据查询语句创建视图

我们都知道视图的本质就是查询语句,那么就可以根据查询语句创建视图,前提 知道视图的组成,已经写好的sql 语句,多表或单表的查询语句,将查询语句变成视图。所以视图可以由单表Mssq视图,多表或视图加表构成。1、新建视图2、选择数据库中的表,或视图,来创建一...

SQL视图

什么是视图?视图就是基于SQL语句的结果集的可视化的表。不过视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成。视图的特点视图中的数据并不属于视图本身,而是属于基本的表,对视图可以像表一样进行...

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!