如题

解决方案 »

  1.   

    SELECT --TableName=o.name,OWNER=USER_NAME(o.uid),TableDescription=ISNULL(ptb.value,N''),
    TableName=CASE WHEN c.colid=1 THEN o.name ELSE N'' END,
    OWNER=CASE WHEN c.colid=1 THEN USER_NAME(o.uid) ELSE N'' END,
    TableDescription=CASE WHEN c.colid=1 THEN ISNULL(ptb.value,N'') ELSE N'' END,
    FieldId=c.colid,FieldName=c.name,
    FieldType=QUOTENAME(t.name)
    +CASE 
    WHEN t.name IN (N'decimal',N'numeric')
    THEN N'('+CAST(c.prec as varchar)+N','+CAST(c.scale as varchar)+N')'
    WHEN t.name IN (N'float')
    OR t.name like N'%char'
    OR t.name like N'%binary'
    THEN N'('+CAST(c.prec as varchar)+N')'
    ELSE N'' END
    +CASE WHEN c.isnullable=1 THEN N'' ELSE N' NOT' END+N' NULL',
    FieldDescription=ISNULL(pfd.value,''),
    DefileLength=c.length,
    FieldDefault=ISNULL(df.text,N''),
    IsIDENTITY=CASE WHEN COLUMNPROPERTY(o.id,c.name,N'IsIdentity')=1 THEN N'√' ELSE N'' END,
    IsComputed=CASE WHEN COLUMNPROPERTY(o.id,c.name,N'IsComputed')=1 THEN N'√' ELSE N'' END,
    IsROWGUID=CASE WHEN COLUMNPROPERTY(o.id,c.name,N'IsRowGuidCol')=1 THEN N'√' ELSE N'' END,
    IsPrimaryKey=CASE WHEN opk.xtype IS NULL THEN N'' ELSE N'√' END
    FROM sysobjects o
    JOIN syscolumns c
    ON c.id=o.id
    AND OBJECTPROPERTY(o.id,N'IsUserTable')=1
    -- AND o.name=N'要查询的表名'
    -- AND c.name=N'要查询的列名'
    JOIN systypes t
    ON t.xusertype=c.xusertype
    LEFT JOIN syscomments df
    ON df.id=c.cdefault
    LEFT JOIN sysproperties ptb
    ON ptb.id=o.id and ptb.smallid=0
    LEFT JOIN sysproperties pfd
    ON pfd.id=o.id and pfd.smallid=c.colid
    LEFT JOIN sysindexkeys idxk
    ON idxk.id=o.id
    AND idxk.colid=c.colid
    LEFT JOIN sysindexes idx
    ON idx.indid=idxk.indid
    AND idx.id=idxk.id
    AND idx.indid NOT IN(0,255)
    LEFT JOIN sysobjects opk
    ON opk.parent_obj=o.id
    AND opk.name=idx.name
    AND OBJECTPROPERTY(opk.id,N'IsPrimaryKey')=1
    ORDER BY o.name,c.colidSELECT 
    表名=case when a.colorder=1 then d.name else '' end,
    表说明=case when a.colorder=1 then isnull(f.value,'') else '' end,
    字段序号=a.colorder,
    字段名=a.name,
    标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
    主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
    SELECT name FROM sysindexes WHERE indid in(
    SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
    ))) then '√' else '' end,
    类型=b.name,
    占用字节数=a.length,
    长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
    小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
    允许空=case when a.isnullable=1 then '√'else '' end,
    默认值=isnull(e.text,''),
    字段说明=isnull(g.[value],'')
    FROM syscolumns a
    left join systypes b on a.xusertype=b.xusertype
    inner join sysobjects d on a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'
    left join syscomments e on a.cdefault=e.id
    left join sysproperties g on a.id=g.id and a.colid=g.smallid  
    left join sysproperties f on d.id=f.id and f.smallid=0
    --where d.name='要查询的表'    --如果只查询指定表,加上此条件
    order by a.id,a.colorder
    --显示当前库中的所有表/系统表/视图
    --如果只显示其中几项,则通过指定 @table_type 的参数列表来实现
    --TABLE        代表用户表
    --SYSTEM TABLE 代表系统表
    --VIEW         代表视图
    exec sp_tables @table_type='''TABLE'',''SYSTEM TABLE'',''VIEW'''--显示指定表的表结构信息,sysobjects 是要显示的表名
    exec sp_columns 'sysobjects'SELECT TableName=o.name,OWNER=USER_NAME(o.uid),TableDescription=ISNULL(ptb.value,N''),
    FieldId=c.colid,FieldName=c.name,
    FieldType=QUOTENAME(t.name)
    +CASE 
    WHEN t.name IN (N'decimal',N'numeric')
    THEN N'('+CAST(c.prec as varchar)+N','+CAST(c.scale as varchar)+N')'
    WHEN t.name IN (N'float')
    OR t.name like N'%char'
    OR t.name like N'%binary'
    THEN N'('+CAST(c.prec as varchar)+N')'
    ELSE N'' END
    +CASE WHEN c.isnullable=1 THEN N'' ELSE N' NOT' END+N' NULL',
    FieldDescription=ISNULL(pfd.value,''),
    DefileLength=c.length,
    FieldDefault=ISNULL(df.text,N''),
    IsIDENTITY=COLUMNPROPERTY(o.id,c.name,N'IsIdentity'),
    IsComputed=COLUMNPROPERTY(o.id,c.name,N'IsComputed'),
    IsROWGUID=COLUMNPROPERTY(o.id,c.name,N'IsRowGuidCol'),
    IsPrimaryKey=CASE WHEN opk.xtype IS NULL THEN 0 ELSE 1 END
    FROM sysobjects o
    JOIN syscolumns c
    ON c.id=o.id
    AND OBJECTPROPERTY(o.id,N'IsUserTable')=1
    JOIN systypes t
    ON t.xusertype=c.xusertype
    LEFT JOIN syscomments df
    ON df.id=c.cdefault
    LEFT JOIN sysproperties ptb
    ON ptb.id=o.id and ptb.smallid=0
    LEFT JOIN sysproperties pfd
    ON pfd.id=o.id and pfd.smallid=c.colid
    LEFT JOIN sysindexkeys idxk
    ON idxk.id=o.id
    AND idxk.colid=c.colid
    LEFT JOIN sysindexes idx
    ON idx.indid=idxk.indid
    AND idx.id=idxk.id
    AND idx.indid NOT IN(0,255)
    LEFT JOIN sysobjects opk
    ON opk.parent_obj=o.id
    AND opk.name=idx.name
    AND OBJECTPROPERTY(opk.id,N'IsPrimaryKey')=1
    ORDER BY o.name,c.colid
      

  2.   


    SELECT 
        表名      = case when a.colorder=1 then d.name else '' end,
        字段序号  = a.colorder,
        字段名    = a.name,
        标识      = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
        主键      = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
                         SELECT name FROM sysindexes WHERE indid in(
                            SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '√' else '' end,
        类型      = b.name,
        占用字节数= a.length,
        长度      = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
        小数位数  = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
        允许空    = case when a.isnullable=1 then '√'else '' end,
        默认值    = isnull(e.text,'')
     --   字段说明  = isnull(g.[value],'')
    FROM 
        syscolumns a
    left join 
        systypes b 
    on 
        a.xusertype=b.xusertype
    inner join 
        sysobjects d 
    on 
        a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'
    left join 
        syscomments e 
    on 
        a.cdefault=e.id
    --where 
    --    d.name='tt'    --如果只查询指定表,加上此条件
    order by 
        a.id,a.colorder