lbom

          小江西

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            18 隨筆 :: 21 文章 :: 69 評論 :: 0 Trackbacks
          ------------------------- MS SQLServer ------------------------------------------------------------

          --表說明
          SELECT dbo.sysobjects.name AS TableName,
          dbo.sysproperties.[value] AS TableDesc
          FROM dbo.sysproperties INNER JOIN
          dbo.sysobjects ON dbo.sysproperties.id = dbo.sysobjects.id
          WHERE (dbo.sysproperties.smallid = 0)
          ORDER BY dbo.sysobjects.name

          --字段說明
          SELECT dbo.sysobjects.name AS TableName, dbo.syscolumns.colid,
          dbo.syscolumns.name AS ColName, dbo.sysproperties.[value] AS ColDesc
          FROM dbo.sysproperties INNER JOIN
          dbo.sysobjects ON dbo.sysproperties.id = dbo.sysobjects.id INNER JOIN
          dbo.syscolumns ON dbo.sysobjects.id = dbo.syscolumns.id AND
          dbo.sysproperties.smallid = dbo.syscolumns.colid
          ORDER BY dbo.sysobjects.name, dbo.syscolumns.colid

          --主鍵、外鍵信息(簡化)
          select
          c_obj.name as CONSTRAINT_NAME
          ,t_obj.name as TABLE_NAME
          ,col.name as COLUMN_NAME
          ,case col.colid
          when ref.fkey1 then 1
          when ref.fkey2 then 2
          when ref.fkey3 then 3
          when ref.fkey4 then 4
          when ref.fkey5 then 5
          when ref.fkey6 then 6
          when ref.fkey7 then 7
          when ref.fkey8 then 8
          when ref.fkey9 then 9
          when ref.fkey10 then 10
          when ref.fkey11 then 11
          when ref.fkey12 then 12
          when ref.fkey13 then 13
          when ref.fkey14 then 14
          when ref.fkey15 then 15
          when ref.fkey16 then 16
          end as ORDINAL_POSITION
          from
          sysobjects c_obj
          ,sysobjects t_obj
          ,syscolumns col
          ,sysreferences ref
          where
          permissions(t_obj.id) != 0
          and c_obj.xtype in ('F ')
          and t_obj.id = c_obj.parent_obj
          and t_obj.id = col.id
          and col.colid in
          (ref.fkey1,ref.fkey2,ref.fkey3,ref.fkey4,ref.fkey5,ref.fkey6,
          ref.fkey7,ref.fkey8,ref.fkey9,ref.fkey10,ref.fkey11,ref.fkey12,
          ref.fkey13,ref.fkey14,ref.fkey15,ref.fkey16)
          and c_obj.id = ref.constid
          union
          select
          i.name as CONSTRAINT_NAME
          ,t_obj.name as TABLE_NAME
          ,col.name as COLUMN_NAME
          ,v.number as ORDINAL_POSITION
          from
          sysobjects c_obj
          ,sysobjects t_obj
          ,syscolumns col
          ,master.dbo.spt_values v
          ,sysindexes i
          where
          permissions(t_obj.id) != 0
          and c_obj.xtype in ('UQ' ,'PK')
          and t_obj.id = c_obj.parent_obj
          and t_obj.xtype = 'U'
          and t_obj.id = col.id
          and col.name = index_col(t_obj.name,i.indid,v.number)
          and t_obj.id = i.id
          and c_obj.name = i.name
          and v.number > 0
          and v.number <= i.keycnt
          and v.type = 'P'

          order by CONSTRAINT_NAME, ORDINAL_POSITION


          --主鍵、外鍵對照(簡化)
          select
          fc_obj.name as CONSTRAINT_NAME
          ,i.name as UNIQUE_CONSTRAINT_NAME
          from
          sysobjects fc_obj
          ,sysreferences r
          ,sysindexes i
          ,sysobjects pc_obj
          where
          permissions(fc_obj.parent_obj) != 0
          and fc_obj.xtype = 'F'
          and r.constid = fc_obj.id
          and r.rkeyid = i.id
          and r.rkeyindid = i.indid
          and r.rkeyid = pc_obj.id


          ------------------------------------------ ORACLE ----------------------------------------------------

          --表信息
          select * from all_tab_comments t
          where owner='DBO'

          --列信息
          select * from all_col_comments t
          where owner='DBO'

          --主鍵、外鍵對照
          select OWNER, CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, R_OWNER, R_CONSTRAINT_NAME
          from all_constraints
          where owner='DBO' and (Constraint_Type='P' or Constraint_Type='R')


          --主鍵、外鍵信息
          select *
          from all_cons_columns
          where owner='DBO'
          order by Constraint_Name, Position


          -------------------------------------------- Access ----------------------------------------------------
          //Access中的系統表MSysobjects存儲屬性的字段是二進制格式,不能直接分析
          //可以采用ADO自帶的OpenSchema方法獲得相關信息

          //use ADOInt.pas
          //po: TableName
          //DBCon:TADOConnection
          /ds:TADODataSet

          --表信息
          DBCon.OpenSchema(siTables, VarArrayOf([Null, Null, 'Table']), EmptyParam, ds);

          --列信息
          DBCon.OpenSchema(siColumns, VarArrayOf([Null, Null, 'po']), EmptyParam, ds);

          --主鍵
          DBCon.OpenSchema(siPrimaryKeys, EmptyParam, EmptyParam, ds);


          --主鍵、外鍵對照
          DBCon.OpenSchema(siForeignKeys, EmptyParam, EmptyParam, ds);

          posted on 2006-03-24 08:36 lbom 閱讀(414) 評論(0)  編輯  收藏 所屬分類: 網絡資料
          主站蜘蛛池模板: 大渡口区| 镇原县| 上饶县| 兰考县| 滨州市| 搜索| 瑞昌市| 盐源县| 梓潼县| 阿克陶县| 土默特右旗| 天峨县| 汝阳县| 辽源市| 枞阳县| 静乐县| 台中县| 梧州市| 临湘市| 阿城市| 博罗县| 长治县| 明溪县| 南木林县| 塘沽区| 临邑县| 会东县| 司法| 内丘县| 龙泉市| 张家界市| 会理县| 象州县| 梁河县| 长武县| 武威市| 威信县| 宣汉县| 井冈山市| 漳平市| 东光县|