当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 理解 SQL Server 中系统表Sysobjects

MSSQL
SQLServer 批量插入数据的两种方法
SQLServer 通用的分区增加和删除的算法
数据库的一些常用知识
SQLServer 连接异常与解决方法小结
sqlserver 无法验证产品密匙的完美解决方案[测试通过]
sql2000 卸载后重新安装时不能安装的解决办法
SQLServer 快速备份的十种方法
sqlserver 中一些常看的指标和清除缓存的方法
SQL 提权 常用命令
数据转换冲突及转换过程中大对象的处理
SQLServer 数据库开发顶级技巧
远程连接SQLSERVER 2000服务器方法
SQLserver2000 企业版 出现"进程51发生了严重的异常"错误的处理方法
SQLServer 触发器 数据库进行数据备份
SQLServer 数据库备份过程中经常遇到的九种情况
SQL 截取字符串应用代码
除MSSQL数据库text字段中恶意脚本的删方法
SQLServer CONVERT 函数测试结果
SQLServer 中.与::的区别
SQL 研究 相似的数据类型

MSSQL 中的 理解 SQL Server 中系统表Sysobjects


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 128 ::
收藏到网摘: n/a

关于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>
 
在特殊情况下,也就是在父表格拥有触发器的情况下,你可能想要用下面这样的代码查找数据库:

在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给自己生成文档了。