理解中系统表
关于SQL Server数据库的一切信息都保存在它的系统表格里。我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格。但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器。你可以一个一个地检查表格,但是如果你有500个表格的话,这可能会消耗相当大的人工。
这就让Sysobjects表格有了用武之地。虽然我不建议你更新这个表格,但是你当然有权对其进行审查。
在大多数情况下,对你最有用的两个列是和ype。前面一个用来列出待考察对象的名字,而后一个用来定义对象的类型:
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 ltrig 0 THEN\"Delete\" WHEN strig 0 THEN\"Insert\" WHEN dtrig 0 THEN\"Update\" END\"TriggerType\" FROM sysobjects Sys1 JOIN sysobjects Sys2 ON rent_obj = Sys2.[id] WHERE ype=\"TR\"ORDERBY TableName
在SQL Server 2005里,首选的技术是使用系统视图。这种方式会把你的查询同微软选择对系统表格进行的任何改变隔绝开来。
下面是一个简单的例子,它使用了INFORMATION_SCHEMA_TABLES视图:
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE FROMINFORMATION_BLESORDERBY TABLE_SCHEMA, TABLE_NAME
对于AdventureWorks数据库或者任何你自己的数据库,使用这个查询可以产生一个表格快速列表。
为了说明这些架构查询的能力,看下面的语句,它们列出所选数据库里所有的函数和存储过程。
SELECT*FROMINFORMATION_UTINESORDERBY ROUTINE_TYPE, ROUTINE_NAME
市面上有20种这样的信息架构视图。如果你需要将数据库归档,而且无法承担商业解决方案,例如Red Gate或者Apex提供的方案的话,那么通过这些视图和一点点试验,你就可以让SQL Server给自己生成文档了。
乌鲁木齐治白癜风医院哪家好新标家居质量怎么样
广州治疗宫颈糜烂医院
-
九分裤+乐福鞋,夏日这样穿,时髦又显高,很适合小个子
夏日傍晚,前往篇名,乐声徐徐下劝教蛙声一片。时节,冬天更为替,当夏日...
2023-12-06
-
270名工人全返岗,青浦这家企业停建率达到100%
在三洋升降机制造车间,处处都是上下班风光,车间内270名工人全部返岗、投...
2023-11-28
-
芬兰将成为第三个被俄罗斯断供液化的欧洲国家
在拒绝以第纳尔付款后,瑞典紧接著已是第三个被东欧断供油井的拉丁美洲国...
2023-11-08
-
研究100+小红书热门标题,我总结小红书标题的万能关系式
编辑导语:俗话说得好,书名是一篇文里面的胸部,一个好的书名是非常举足...
2023-10-29
-
奥特维(688516.SH)子公司与合盛硅业(603260.SH)原为签订1.3亿元160型单晶炉买
奥特维(688516.SH)紧急通知,公司控股子公司无锡松瓷机电控股(“松瓷机电”)...
2023-10-28
-
蔚来成全球首家三地上市车企!中概股大留住,香港、新加坡竞逐激烈
之在此之前概股转至浪潮独自奔涌,蔚来(09866.HK;NIO.NYSE;NIO.SI)5年初20日登...
2023-10-27