中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > MSSQL Server
理解 SQL Server 中系统表Sysobjects
作者:佚名 时间:2007-06-26 14:47 出处:builder.com 责编:月夜寒箫
              摘要:理解 SQL Server 中系统表Sysobjects

关于SQL Server数据库的一切信息都保存在它的系统表格里。我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格。但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器。你可以一个一个地检查表格,但是如果你有500个表格的话,这可能会消耗相当大的人工。

 

这就让Sysobjects表格有了用武之地。虽然我不建议你更新这个表格,但是你当然有权对其进行审查。

 

在大多数情况下,对你最有用的两个列是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给自己生成文档了。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有