zoukankan      html  css  js  c++  java
  • Sql Server 查看所有存储过程或视图的位置及内容

    前一段时间,有个需求,就是对部分表进行了分库,所以,原库里面的存储过程、视图和函数里的表名等信息也要跟着更新,刚开始尝试手动检查了几个存储过程,可发现存储过程太多,检查起来效率很低,还容易出错,况且还有视图和函数,所以就想到了  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 中的内容,就和下图中的操作是一样的:
     
  • 相关阅读:
    UVA 10462 Is There A Second Way Left?(次小生成树&Prim&Kruskal)题解
    POJ 1679 The Unique MST (次小生成树)题解
    POJ 2373 Dividing the Path (单调队列优化DP)题解
    BZOJ 2709 迷宫花园
    BZOJ 1270 雷涛的小猫
    BZOJ 2834 回家的路
    BZOJ 2506 calc
    BZOJ 3124 直径
    BZOJ 4416 阶乘字符串
    BZOJ 3930 选数
  • 原文地址:https://www.cnblogs.com/itjeff/p/5941483.html
Copyright © 2011-2022 走看看