天天看点

Sybase Anywhere 11 元数据[SQL Schema]

正文

  一、取得所有用户表

select st.table_name,st.remarks from sysobjects tbl 

inner join SYSTABLE st on st.object_id = tbl.id

where tbl.type = 'U' and tbl.uid = 1

  二、取得表的详细字段信息

select c.name as ColumnName, c.length, c.prec, c.scale,baset.name as [DataType],stb.pkey,stb.[nulls],stb.[default],stb.remarks

from sysobjects tbl

inner join dbo.syscolumns as c on tbl.id=c.id

inner join SYSCOLUMN stb on stb.column_name =  c.name and stb.table_id = st.table_id

inner join systypes as baset on c.type = baset.type and c.usertype = baset.usertype

where tbl.name='{0}' and tbl.type = 'U' and tbl.uid = 1

    注意"tbl.name='{0}'"替换成表名,这里就不考虑额外的情况了。

  三、注意问题

    3.1  以上取表结构语句不能取到数据类型为“uniqueidentifierstr”的字段,这个字段在sysobjects和syscolumns没有!!但是SYSCOLUMN里面能找到,所以随后需要再研究一下,找到办法了会再来更新此文。

    3.2  取试图和存储过程等其他取元数据的SQL语句随后要用到或者有时间并且能弄出来的话再贴出来更新此文。

结束语

  明白原理了,就不用花大把大把的时间去研究人家工具了,一方面有点杀鸡用牛刀,再者自己写的时间比研究工具的时间可能要短,并且更加实用一些(找破解、一动就是几百兆的软件安装 - -#)。再次感谢搜索引擎,虽然没有直接找到,但是给的暗示足够我完成这项任务 : )

本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/586708,如需转载请自行联系原作者