系统视图,系统表,系统存储过程的使用获取数据库中用户表信息1、获取特定库中所有用户表信息select*from sys.tablesselect*from sys.objects where type='U' --用户表第二条语句中当type='S'时是系统表2、获取表的字段信息select*from sys.columns where object_id=object_id('表名') select*from syscolumns where id=OBJECT_ID('表名' )3、获取当前库中表的字段及类型信息(1)select'字段名'=,'类型名'=,'字段长度'=a.max_length,'参数顺序'=a.column_idfrom sys.columns a left join sys.types bon er_type_id=er_type_idwhere object_id=object_id('表名')syscolumns与sys.columns表用法类似。
获取索引或主键信息1、获取对象及对应的索引的信息select'对象名'=,'对象类型'=a.type,'索引名'=,'索引类型'=case b.type when 1 then'聚集索引'when 2 then'非聚集索引'when 3 then'xml索引'else'空间索引'end,'主键否'=case when b.is_primary_key=1 then'主键'else''endFROM sys.objects A JOIN sys.indexes B ON A.object_id=B.object_id WHERE A.type='U'AND IS NOT NULL order by 2、获取表的主键及对应的字段(1)select'表名'=,'主键名'=,'字段名'=from sys.indexes a join sys.index_columns bon a.object_id=b.object_id and a.index_id=b.index_idjoin sys.columns c on a.object_id=c.object_id andc.column_id=b.column_idjoin sys.objects d on d.object_id=c.object_idwhere a.is_primary_key=1(2)SELECT'表名'=OBJECT_NAME(b.parent_obj),'主键名'=,'字段名'=FROM syscolumns a,sysobjects b,sysindexes c,sysindexkeys d WHERE b.xtype='PK'AND b.parent_obj=a.id AND c.id=a.id AND = AND d.id=a.idAND d.indid=c.indid AND a.colid=d.colid(3)select'所属架构'=,'表名'=,'主键名'=,'列名'=,'键列序数'=ic.key_ordinalfrom sys.key_constraints as kjoin sys.tables as ton t.object_id=k.parent_object_idjoin sys.schemas as son s.schema_id=t.schema_idjoin sys.index_columns as icon ic.object_id=t.object_idand ic.index_id=k.unique_index_idjoin sys.columns as con c.object_id=t.object_idand c.column_id=ic.column_id where k.type='pk';(4)使用系统存储过程获取指定表的主键信息EXEC sp_pkeys'表名'--表名只能是当前数据库下的单独表名不能带上架构名3、查询哪些表创建了主键select'表名'= from(select name,object_id from sys.objects where type='u')aleft joinsys.indexes bon a.object_id=b.object_id and b.is_primary_key=1where is not null注:查询哪些表没有创建主键,将where条件改成is null 即可。
查找视图信息1、查看视图属性信息exec sp_help '视图名'2、查看创建视图脚本exec sp_helptext'视图名'3、查看当前数据库所有视图基本信息select*from sys.viewsselect*from sys.objects where type='V'select*from INFORMATION_SCHEMA.VIEWS4、查看视图对应的字段及字段属性select'视图名'=,'列名'=,'字段类型'=TYPE_NAME(b.system_type_id),'字段长度'=b.max_lengthfrom sys.views a join sys.columns bon a.object_id=b.object_id order by 5、获取视图中的对象信息exec sp_depends'视图名'查看存储过程信息1、基本信息select*from sys.proceduresselect*from sys.objects where type='P'2、查看存储过程创建文本sp_helptext 存储过程名称select text from syscomments where id=object_id (存储过程名称)3、查看存储过程的参数信息(1)select'参数名称'=name,'类型'=type_name(xusertype),'长度'=length,'参数顺序'=colidfrom syscolumnswhere id=object_id(存储过程名称)(2)select'参数名称'=name,'类型'=type_name(system_type_id),'长度'=max_length,'参数顺序'=parameter_idfrom sys.parameterswhere object_id=object_id(存储过程名称)返回当前环境中可查询的指定表或视图的列信息。
exec sp_columns表名select*from sys.columns where object_id=OBJECT_id(表名)select*from sys.syscolumns where id=OBJECT_ID(表名)select*from information_schema.columns where TABLE_NAME=表名查询存储过程或函数的参数的详细信息select*from sys.parameters where object_id=object_id(函数或存储过程名称)获取所有数据库信息1、获取数据库的基本信息select name from sysdatabases order by name2、获取某个数据库的文件信息select*from[数据库名].[架构名].sysfiles3、获取数据库磁盘使用情况exec sp_spaceused4、获取数据库中表的空间使用情况IF OBJECT_ID('tempdb..#TB_TEMP_SPACE')IS NOT NULL DROP TABLE#TB_TEMP_SPACEGOCREATE TABLE#TB_TEMP_SPACE(NAME VARCHAR(500),ROWS INT,RESERVED VARCHAR(50),DATA VARCHAR(50),INDEX_SIZE VARCHAR(50),UNUSED VARCHAR(50))GOSP_MSFOREACHTABLE'INSERT INTO #TB_TEMP_SPACE exec sp_spaceused ''?''' GOSELECT*FROM#TB_TEMP_SPACEORDER BY REPLACE(DATA,'KB','')+0 DESC获取触发器的相关信息1、查看触发器定义及相关属性信息(1)exec sp_help'触发器名'(2)查看表中指定类型的触发器的属性信息exec sp_helptrigger ['表名'][,['触发器类型']]--参数2可选,省略参数2时返回该表中所有类型的触发器属性2、获取触发器的创建脚本exec sp_helptext '触发器名'3、查看表中禁用的触发器select name from sys.triggers where parent_id=object_id('表名')and is_disabled=1注:is_disabled=0时为启用的触发器。
4、获取触发器的父类名,触发器名,触发器状态和触发器类型信息select'父类名'=,'对象类型'=a.type,'触发器名'=,'触发器状态'=case when b.is_disabled=1 then'禁用'else'启用'end,'触发器类型'=case when b.is_instead_of_trigger=1 then'instead of' else'after'endfrom sys.objects a join sys.triggers b on a.object_id=b.parent_id注:查询单个表或视图的触发器信息加上a.object_id=object_id(表名)条件。