【整理】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为 ...
随机推荐
- Tengine笔记3:Nginx的反向代理和健康状态检查
通常代理服务器只用于处理内部网络对Intenet的请求,客户端必须通过代理服务器把本来要发送到Web服务器上的请求通过代理服务器分发给Web服务器,Web服务器响应时再通过代理服务器把响应发给客户端: ...
- cocos2dx lua 学习笔记(一)
macosx 安装 lua curl -R -O http://www.lua.org/ftp/lua-5.1.4.tar.gz tar zxf lua-5.1.4.tar.gz cd lua-5.1 ...
- python中pip的使用和安装
Ubuntu下安装pip的方法 安装pip的方法: Install pip and virtualenv for Ubuntu 10.10 Maverick and newer $ sudo ...
- 【精度问题】【HDU2899】Strange fuction
Strange fuction Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- css系列教程--选择器
css派生选择器:是指在某个样式表或者dom元素的行内定义行内元素的属性,而其他同名样式在其他dom节点无效的样式表定义方式.例如:div ul li{border:1px solid red;}&l ...
- for练习--侦察兵
static void Main21侦察兵(string[] args) { //某侦察队接到一项紧急任务,要求在A.B.C.D.E.F六个队员中尽可能多地挑若干人,但有以下限制条件: //侦察兵A和 ...
- asp.net 2.0 Session丢失问题
可行的解决方法(本人已用): 1.Web.config文件修改sessionstate模式(默认为InProc) <sessionState mode="/> 2.开启ASP.N ...
- 图的最短路径问题————树上奶牛(tree.cpp)
和往常一样,继续从题目引入 树上奶牛 (tree.cpp) [题目描述] 农夫John的奶牛不是住在地上而是住在树上的QWQ. 奶牛之间需要串门,不过在串门之前他们会向John询问距离的大小.可是Jo ...
- *++p和*p++的区别
*p++:先是用*p这个值,然后再使p的地址加1. #include<iostream>using namespace std;int main(){ char s[81]=&quo ...
- Android 获取系统图库和相机照片 裁剪并显示
接上一篇 package com.example.image; import android.app.Activity; import android.content.Intent; import a ...