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

MSSQL
如何让新安装的MySQL数据库变得更安全
考虑SQL Server安全时所应注意的几个方面
快速解决SQL server 2005孤立用户问题
比较一下看看自己掌握了多少SQL快捷键
怎样在SQL Server 2005中用证书加密数据
讲解使用SQL Server升级顾问的详细步骤
讲解设计应用程序时避免阻塞的八个准则
配置SQL Server文件组对应不同的RAID系统
讲解数据库管理系统必须提供的基本服务
讲解SQL Server2005数据项的分拆与合并
SQL Server数据库动态交叉表的参考示例
SQL SERVER 2005中的同步复制技术
SQL Server查询速度慢的原因及优化方法
减少SQL Server死锁的方法
sql server 视图作用
扩展数据库系统选项实现更高的可扩展性
SQL Server开发过程中的的常见问题总结
对跨多个表格的数据组合时需要用到的SQL
SQL Server 2005 FOR XML嵌套查询使用详解
另类解读SQL Server中的DateTime数据类型

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 107 ::
收藏到网摘: 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给自己生成文档了。