博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL Server中的sysobjects

Posted on 2011-09-21 16:34  bug yang  阅读(1268)  评论(0编辑  收藏  举报

关于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 * from sys.objects --在数据库中创建的每个用户定义的架构范围内的对象在该表中均对应一行。

select * from sys.sysobjects--在数据库中创建的每个对象(例如约束、默认值、日志、规则以及存储过程)都对应一行。

"sys.objects是sys.sysobjects的子集"