【整理】SQLServer查询各种数据库对象(表,索引,视图,图表,存储过程等)
首先明确数据库对象的定义:数据库对象定义数据库内容的结构。它们包含在数据库项目中,数据库项目还可以包含数据生成计划和脚本。
常见的数据库对象包括:表,索引,视图,图表,缺省值,规则,触发器,存储过程,函数等
1.sys.objects视图
数据库中创建的每一个对象都对应表中的一行,但不包括DDL触发器,查询触发器应该使用sys.triggers
常见的不同类型对象在sys.objects中的区分:
| 类型 | type列 | type_desc列 |
| FOREIGN KEY 约束 | F | FOREIGN_KEY_CONSTRAINT |
| SQL 标量函数 | FN | SQL_SCALAR_FUNCTION |
| SQL 内联表值函数 | IF | SQL_INLINE_TABLE_VALUED_FUNCTION |
| 内部表 | IT | INTERNAL_TABLE |
| SQL 存储过程 | P | SQL_STORED_PROCEDURE |
| PRIMARY KEY 约束 | PK | PRIMARY_KEY_CONSTRAINT |
| 系统基表 | S | SYSTEM_TABLE |
| SQL 表值函数 | TF | SQL_TABLE_VALUED_FUNCTION |
| 表(用户定义类型) | U | USER_TABLE |
| UNIQUE 约束 | UQ | UNIQUE_CONSTRAINT |
| 视图 | V | View |
因此查询数据库中包含的对象可以直接查询sys.objects视图,比如:查询数据库中所有的视图
SELECT * FROM sys.objects WHERE type = 'U'
由于对象id在对应数据库中是唯一的,可以在查询时联结其他表或视图,比如:查询数据库中所有存储过程及其内容
SELECT O.name, M.definition FROM sys.objects O
JOIN sys.sql_modules M ON M.object_id = O.object_id
WHERE O.type = 'P'
2.其他查询方法
存储过程有单独的系统视图sys.procedures,基本等价于sys.objects WHERE type = 'P'
另外还可以执行系统sp查询存储过程:EXEC sp_stored_procedures,不同的是:
sys.procedures (或sys.objects WHERE type = 'P')只包含用户存储过程,但执行sp_stored_procedures可以查询所有种类的存储过程和除了系统函数之外的所有函数
3.sys.modules视图
为每个包含 SQL 语言定义模块的系统对象返回一行,类型为 FN、IF、P、PC、TF 和 V 的系统对象具有关联的 SQL 模块。
因此,对于这些类型的对象,可以联结sys.objects查询对象的语言定义模块,即其内容。
4.sp_helptext需要注意的
sp_helptext是使用频率非常高的系统存储过程,使用它可以快速列出指定名称存储过程或函数的内容,但是有如下缺点:
①格式化代码
②当一行长度超过一定后,分行显示
这样当修改存储过程或函数时,如果使用sp_helptext很可能导致格式错乱,对于下一次的代码阅读造成很大的麻烦。
因此,建议sp_helptext仅限于查看存储过程或函数的内容。
另外,加密的存储过程不能通过sp_helptext查询。
本文待补充
【整理】SQLServer查询各种数据库对象(表,索引,视图,图表,存储过程等)的更多相关文章
- Oracle 客户端、服务器、数据库、数据库对象(表、视图等)的关系
1.数据库服务器 所谓数据库服务器,只是在机器上安装了一个数据库管理软件,这个软件可以管理多个数据库.一般开发人员会针对每一个应用创建一个数据库 2.单实例数据库模式下的数据库服务器.数据库.数据库实 ...
- mysql 查询指定数据库所有表, 指定表所有列, 指定列所有表 所有外键及索引, 以及索引的创建和删除
查询指定 数据库 中所有 表 (指定数据库的,所有表) // 可以把 TABLE_NAME 换成 * 号, 查看更丰富的信息 SELECT TABLE_NAME FROM information_sc ...
- Sqlserver列出所有数据库名,表名,字段名
Sqlserver列出所有数据库名,表名,字段名 1.获取所有数据库名: ? 1 SELECT Name FROM Master..SysDatabases ORDER BY Name 注 ...
- SqlServer判断数据库、表、字段、存储过程、函数是否存在
原文:SqlServer判断数据库.表.字段.存储过程.函数是否存在 判断数据库是否存在 if exists (select * from sys.databases where name = '数据 ...
- HubbleDotNet 开源全文搜索数据库项目--为数据库现有表或视图建立全文索引(三) 多表关联全文索引模式
关系型数据库中,多表关联是很常见的事情,HubbleDotNet 可以对部分情况的多表关联形式建立关联的全文索引,这样用户就不需要专门建一个大表 来解决多表关联时的全文索引问题. 下面以 为数据库现有 ...
- Oracle 导出、导入某用户所有数据(包括表、视图、存储过程...)
Oracle 导出.导入某用户所有数据(包括表.视图.存储过程...)前提:在CMD 命令下 导出命令:exp 用户名/密码@数据库 owner=用户名 file=文件存储路径(如:F:\abcd.d ...
- PowerDesigner建模应用(二)逆向工程,导出PDM文件前过滤元数据(表、视图、存储过程等)
在上一篇文章<PowerDesigner建模应用(一)逆向工程,配置数据源并导出PDM文件>步骤二中导出了目标数据库对应的PDM文件, 该文件中展示出了所有表的信息与关系. 某些业务场景下 ...
- PowerDesigner应用02 逆向工程之导出PDM文件前过滤元数据(表、视图、存储过程等)
在上一篇文章<PowerDesigner应用01 逆向工程之配置数据源并导出PDM文件>步骤二中导出了目标数据库对应的PDM文件, 该文件中展示出了所有表的信息与关系. 某些业务场景下只需 ...
- 读写SQL脚本进行创建表、视图和存储过程
一.按照先创建表.视图.存储过程的顺序创建: 二.导出脚本的时候注意:保存为ANSI文本,选项中:if not exists为true,防止覆盖:包含说明性标头为false;use database为 ...
随机推荐
- Appium for Windows环境搭建
服务环境: 1.安装Nodejs 下载nodejs安装包(http://nodejs.org/download/)安装 测试安装是否成功:运行cmd,输入node -v 2.安装android的SKD ...
- Jam's math problem(思维)
Jam's math problem Submit Status Practice HDU 5615 Description Jam has a math problem. He just lea ...
- K-近邻算法python实现
内容主要来源于机器学习实战这本书.加上自己的理解. 1.KNN算法的简单描写叙述 K近期邻(k-Nearest Neighbor.KNN)分类算法能够说是最简单的机器学习算法了. 它採用測量不同特征值 ...
- mesos博客集
http://dongxicheng.org/category/apache-mesos/
- 关于Console的Main(String[] args)参数输入
之前接触一个往Console里输入参数的项目,资深QA教我怎么run,灰常脸红. 今日无事,baidu之. Step1 写简单Console Code. class Program { static ...
- Android简单登录系统
很长时间没有写博客了,最近一直在写android for gis方面的项目.不过这篇博客就不写gis方面的了,今天刚刚做的一个简单的android登录系统.数据库是android自带的sqlite,s ...
- iOS设计模式解析(六)代理模式
代理模式:为其他对象创建一个代理以控制对这个对象的访问 UML解释:客户端向Proxy发起一个Request()请求,Proxy对象会把这个Request转发给Proxy对象的RealSubject. ...
- Qt3D教程
美其名曰教程 其实就是自己的学习之旅 惯例第一章是qt3d的安装 首先说下环境 Windows_Xp_sp3 下载链接 Qt library 4.8.5 下载链接 (在安装Qt library之前,需 ...
- C++#define的用法(含特殊)
1 无参宏定义无参宏的宏名后不带参数.其定义的一般形式为: #define 标识符 字符串其中的“#”表示这是一条预处理命令.凡是以“#”开头的均为预处理命令.“define”为宏定义命令.“标 ...
- Uber License for Android
Uber license for android list: 1.Butter Knife: 项目地址:https://github.com/JakeWharton/butterknife 这个开源库 ...