|
在大多数情况下,SQL表中对你最有用的两个列是Sysobjects.name和Sysobjects.xtype。前面一个用来列出待考察对象的名字,而后一个用来定义对象的类型: C:检查约束。 D:默认的约束 F:外键约束 L:日志 P:存储过程 PK:主键约束 RF:复制过滤存储过程 S:系统表格 TR:触发器 U:用于表格。 UQ:独特的约束 V:视图 X:被扩展的存储过程 在碰到触发器的情形下,用来识别触发器类型的其他三个列是:deltrig、instrig和uptrig。 你可以用下面的命令列出感兴趣的所有对象: 以下是引用片段: SELECT * FROM sysobjects WHERE xtype = <type of interest> |
在特殊情况下,也就是在父表格拥有触发器的情况下,你可能想要用下面这样的代码查找数据库: 以下是引用片段: SELECT Sys2.[name] TableName, Sys1.[name] TriggerName, CASE WHEN Sys1.deltrig > 0 THEN’Delete’ WHEN Sys1.instrig > 0 THEN’Insert’ WHEN Sys1.updtrig > 0 THEN’Update’ END’TriggerType’ FROM sysobjects Sys1 JOIN sysobjects Sys2 ON Sys1.parent_obj = Sys2.[id] WHERE Sys1.xtype=’TR’ ORDERBY TableName |
在SQL Server 2005里,首选的技术是使用系统视图。这种方式会把你的查询同微软选择对系统表格进行的任何改变隔绝开来。 下面是一个简单的例子,它使用了INFORMATION_SCHEMA_TABLES视图: 以下是引用片段: SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE FROMINFORMATION_SCHEMA.TABLES ORDERBY TABLE_SCHEMA, TABLE_NAME |
对于AdventureWorks数据库或者任何你自己的数据库,使用这个查询可以产生一个表格快速列表。 为了说明这些架构查询的能力,看下面的语句,它们列出所选数据库里所有的函数和存储过程。 以下是引用片段: SELECT*FROMINFORMATION_SCHEMA.ROUTINES ORDERBY ROUTINE_TYPE, ROUTINE_NAME | 市面上有20种这样的信息架构视图。如果你需要将数据库归档,而且无法承担商业解决方案,例如Red Gate或者Apex提供的方案的话,那么通过这些视图和一点点试验,你就可以让SQL Server给自己生成文档了。
|