( 一)利用Sql语句查询数据库中的所有表

1.利用sysobjects系统表

select * from sysobjects where xtype='U'

 2,利用sys.tables目录视图

sys.tables目录视图,为每个表对象返回一行.

select * from sys.tables

注意:sys.tables目录视图也只有在SQL SERVER2005及以上的版本中才能使用。

3,利用存储过程sp_tables

 exec sp_tables

(二)利用Sql语句查询数据中的所有存储过程

1.sysobjects系统表,在数据库中创建的每个对象(例如约束、默认值、日志、规则以及存储过程)都有对应一行,我们在该表中筛选出xtype等于P的所有记录,就为数据库中的存储过程了。

select * from sysobjects where xtype='P'
select * from sys.objects where type='P'

2.sys.procedures目录视图,每个存储过程都会在返回结果集中占一行.

select * from sys.procedures

适用技巧:

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

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

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

主要字段:

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

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

SqlServer中Sql查看存储过程的更多相关文章

  1. SqlServer 中如何查看某一个Sql语句是复用了执行计划,还是重新生成了执行计划

    我们知道SqlServer的查询优化器会将所执行的Sql语句的执行计划作缓存,如果后续查询可以复用缓存中的执行计划,那么SqlServer就会为后续查询复用执行计划而不是重新生成一个新的执行计划,因为 ...

  2. sqlserver中,查看某个函数的调用情况

    今天想在sqlserver中看看自己写的函数都被哪个函数或存储过程调用了,手工检查起来太慢了,于是在网上找一个快速的方法,分享一下. select * from sys.all_sql_modules ...

  3. SqlServer中Sql语句的逻辑执行顺序

    准备数据 Sql脚本如下,两张表,一张客户表Customers只包含customerid和city字段,一张订单表Orders包含orderid和customerid(关联Customers的cust ...

  4. oracle中怎么查看存储过程的源码

    今天想找几天前写的存储过程的源码看看,发现自己熟悉的命令怎么都不好使,要不提示标示符错误要不就是提示未选定行,通过baidu得知type跟name变量要弄成大写的.. select text from ...

  5. SqlServer 动态SQL(存储过程)中Like 传入参数无正确返回值的问题

    最近在做项目时,以动态Sql进行Like语句查询时发现应该返回的结果却一直返回空,后来发现是写法错误: 错误SQL: DECLARE @0 varchar(20) SET @0 = 'XA-LZ' S ...

  6. SQLSERVER中的系统存储过程的使用的总结

    -----------------------------系统存储过程-------------------------------- --列出SQL Server实例中的数据库sp_database ...

  7. Spring 中 SQL 的存储过程

    SimpleJdbcCall 类可以被用于调用一个包含 IN 和 OUT 参数的存储过程.你可以在处理任何一个 RDBMS 时使用这个方法,就像 Apache Derby, DB2, MySQL, M ...

  8. SQLServer中SQL语句与可执行二进制语句

    SQLServer可以执行正常SQL语句也可以执行被转换的二进制语句,一般会用此方法进行数据库注入操作,骗过基本的字符过滤 --将二进制格式转为普通SQL语句 ) = 0x53454C45435420 ...

  9. SQLServer中sql for xml path 的用法

    我们通常需要获取一个多行的某个字段拼出的字符串,我们可以使用for xml path进行处理:下面将介绍for xml path的具体用法: 创建测试表&插入测试数据 在数据库中新增测试表 C ...

随机推荐

  1. Js实现input上传图片并显示缩略图

    用这个方法就可以很方便快捷的实现上传图片并显示缩略图的效果: FileReader 的 readAsDataURL() 先创建一个img标签,再用 fileReader 把input文件的赋值到img ...

  2. lightgbm原理以及Python代码

    原论文: http://papers.nips.cc/paper/6907-lightgbm-a-highly-efficient-gradient-boosting-decision-tree.pd ...

  3. win10 Jmeter下载安装与使用教程

    1.下载 2.安装 下载完成后解压文件(不需要安装) 之后需要配置jmeter环境变量 1)新增新增JMETER_HOME系统变量 2)编辑CLASSPATH变量,加上%JMETER_HOME%\li ...

  4. android adb介绍

    1. 什么是adb 在SDK的Tools文件夹下包含着Android模拟器操作的重要命令ADB,ADB的全称为Android Debug Bridge,就是调试桥的作用.可以与模拟器或android设 ...

  5. linux c 编程 ------ 常见函数

    fork():创建一个进程 exec():停止当前进程中程序的执行,让当前进程执行另一个程序 access():查看是否有操作文件的权限,可以用来判断一个文件是否存在 pipe():无名管道,用在父子 ...

  6. RabbitMQ之集群搭建

    1.RabbitMQ集群模式RabbitMQ集群中节点包括内存节点(RAM).磁盘节点(Disk,消息持久化),集群中至少有一个Disk节点. 2.普通模式(默认)        对于普通模式,集群中 ...

  7. 高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少

    高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少     阅读(81374) | 评论(9)收藏16 淘帖1 赞3   JackJiang Lv.9    1 年前 | 前言 曾几何时我 ...

  8. .net 里面打不出来ConfigurationManager

    ConfigurationManager 这个东东是读取配置文件时需要的. 首先要引用命名空间里面 using System.Configuration; 其次呢,在解决方案的引用里,单机右键进行添加

  9. WebService和Http的POST和GET请求区别和示例

    web service(SOAP) Webservice的一个最基本的目的就是提供在各个不同平台的不同应用系统的协同工作能力.Web service 就是一个应用程序,它向外界暴露出一个能够通过Web ...

  10. OnContextMenu事件(转)

    用oncontextmenu事件单禁用右键菜单 一个页面中,BODY中用oncontextmenu='return false'来取消鼠标右键:在JS中设置oncontextmenu='return ...