得到当前数据库中所有用户表信息

SELECT
 (case when a.colorder=1 then d.name else '' end) N'表名',
 a.colorder N'字段序号',
 a.name N'字段名',
 (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) N'标识',
 (case when (SELECT count(*)
 FROM sysobjects
 WHERE (name in
           (SELECT name
          FROM sysindexes
          WHERE (id = a.id) AND (indid in
                    (SELECT indid
                   FROM sysindexkeys
                   WHERE (id = a.id) AND (colid in
                             (SELECT colid
                            FROM syscolumns
                            WHERE (id = a.id) AND (name = a.name))))))) AND
        (xtype = 'PK'))>0 then '√' else '' end) N'主键',
 b.name N'类型',
 a.length N'占用字节数',
 COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'长度',
 isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'小数位数',
 (case when a.isnullable=1 then '√'else '' end) N'允许空',
 isnull(e.text,'') N'默认值',
 isnull(g.[value],'') AS N'字段说明'
--into ##tx

FROM  syscolumns  a left join systypes b
on  a.xtype=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 
order by object_name(a.id),a.colorder

====////sql////
declare @Sql nvarchar(2000)
set @Sql=

'SELECT  '+
' (case when a.colorder=1 then d.name else '+char(39)+''+char(39)+' end) N'+char(39)+'表名'+char(39)+', '+
' a.colorder N'+char(39)+'字段序号'+char(39)+', '+
' a.name N'+char(39)+'字段名'+char(39)+',   '+
' (case when COLUMNPROPERTY( a.id,a.name,'+char(39)+'IsIdentity'+char(39)+')=1 then '+char(39)+'√'+char(39)+'else '+char(39)+''+char(39)+' end) N'+char(39)+'标识'+char(39)+', '+
' (case when (SELECT count(*) '+
' FROM sysobjects '+
' WHERE (name in '+
'           (SELECT name '+
'          FROM sysindexes '+
'          WHERE (id = a.id) AND (indid in '+
'                    (SELECT indid '+
'                   FROM sysindexkeys '+
'                   WHERE (id = a.id) AND (colid in '+
'                             (SELECT colid '+
'                            FROM syscolumns '+
'                            WHERE (id = a.id) AND (name = a.name))))))) AND '+
'        (xtype = '+char(39)+'PK'+char(39)+'))>0 then '+char(39)+'√'+char(39)+' else '+char(39)+''+char(39)+' end) N'+char(39)+'主键'+char(39)+', '+
' b.name N'+char(39)+'类型'+char(39)+', '+
' a.length N'+char(39)+'占用字节数'+char(39)+', '+
' COLUMNPROPERTY(a.id,a.name,'+char(39)+'PRECISION'+char(39)+') as N'+char(39)+'长度'+char(39)+', '+
' isnull(COLUMNPROPERTY(a.id,a.name,'+char(39)+'Scale'+char(39)+'),0) as N'+char(39)+'小数位数'+char(39)+', '+
' (case when a.isnullable=1 then '+char(39)+'√'+char(39)+'else '+char(39)+''+char(39)+' end) N'+char(39)+'允许空'+char(39)+', '+
' isnull(e.text,'+char(39)+''+char(39)+') N'+char(39)+'默认值'+char(39)+', '+
' isnull(g.[value],'+char(39)+''+char(39)+') AS N'+char(39)+'字段说明'+char(39)+' '+
--'--into ##tx '+
' '+
'FROM  syscolumns  a left join systypes b  '+
'on  a.xtype=b.xusertype '+
'inner join sysobjects d  '+
'on a.id=d.id  and  d.xtype='+char(39)+'U'+char(39)+' and  d.name<>'+char(39)+'dtproperties'+char(39)+' '+
'left join syscomments e '+
'on a.cdefault=e.id '+
'left join sysproperties g '+
'on a.id=g.id AND a.colid = g.smallid '

exec(@Sql)


===仅保留表名、字段名、字段类型和字段说明
declare @Sql nvarchar(2000)
set @Sql=

'SELECT  '+
--' (case when a.colorder=1 then d.name else '+char(39)+''+char(39)+' end) N'+char(39)+'表名'+char(39)+', '+
'  d.name  N'+char(39)+'表名'+char(39)+', '+
--' a.colorder N'+char(39)+'字段序号'+char(39)+', '+
' a.name N'+char(39)+'字段名'+char(39)+',   '+
--' (case when COLUMNPROPERTY( a.id,a.name,'+char(39)+'IsIdentity'+char(39)+')=1 then '+char(39)+'√'+char(39)+'else '+char(39)+''+char(39)+' end) N'+char(39)+'标识'+char(39)+', '+
--' (case when (SELECT count(*) '+
--' FROM sysobjects '+
--' WHERE (name in '+
--'           (SELECT name '+
--'          FROM sysindexes '+
--'          WHERE (id = a.id) AND (indid in '+
--'                    (SELECT indid '+
--'                   FROM sysindexkeys '+
--'                   WHERE (id = a.id) AND (colid in '+
--'                             (SELECT colid '+
--'                            FROM syscolumns '+
--'                            WHERE (id = a.id) AND (name = a.name))))))) AND '+
--'        (xtype = '+char(39)+'PK'+char(39)+'))>0 then '+char(39)+'√'+char(39)+' else '+char(39)+''+char(39)+' end) N'+char(39)+'主键'+char(39)+', '+
' b.name N'+char(39)+'类型'+char(39)+', '+
--' a.length N'+char(39)+'占用字节数'+char(39)+', '+
--' COLUMNPROPERTY(a.id,a.name,'+char(39)+'PRECISION'+char(39)+') as N'+char(39)+'长度'+char(39)+', '+
--' isnull(COLUMNPROPERTY(a.id,a.name,'+char(39)+'Scale'+char(39)+'),0) as N'+char(39)+'小数位数'+char(39)+', '+
--' (case when a.isnullable=1 then '+char(39)+'√'+char(39)+'else '+char(39)+''+char(39)+' end) N'+char(39)+'允许空'+char(39)+', '+
--' isnull(e.text,'+char(39)+''+char(39)+') N'+char(39)+'默认值'+char(39)+', '+
' isnull(g.[value],'+char(39)+''+char(39)+') AS N'+char(39)+'字段说明'+char(39)+' '+
--'--into ##tx '+
' '+
'FROM  syscolumns  a left join systypes b  '+
'on  a.xtype=b.xusertype '+
'inner join sysobjects d  '+
'on a.id=d.id  and  d.xtype='+char(39)+'U'+char(39)+' and  d.name<>'+char(39)+'dtproperties'+char(39)+' '+
'left join syscomments e '+
'on a.cdefault=e.id '+
'left join sysproperties g '+
'on a.id=g.id AND a.colid = g.smallid '

exec(@Sql)

连字段说明都去掉
declare @Sql nvarchar(2000)
set @Sql=

'SELECT  '+
--' (case when a.colorder=1 then d.name else '+char(39)+''+char(39)+' end) N'+char(39)+'表名'+char(39)+', '+
'  d.name  N'+char(39)+'表名'+char(39)+', '+
--' a.colorder N'+char(39)+'字段序号'+char(39)+', '+
' a.name N'+char(39)+'字段名'+char(39)+',   '+
--' (case when COLUMNPROPERTY( a.id,a.name,'+char(39)+'IsIdentity'+char(39)+')=1 then '+char(39)+'√'+char(39)+'else '+char(39)+''+char(39)+' end) N'+char(39)+'标识'+char(39)+', '+
--' (case when (SELECT count(*) '+
--' FROM sysobjects '+
--' WHERE (name in '+
--'           (SELECT name '+
--'          FROM sysindexes '+
--'          WHERE (id = a.id) AND (indid in '+
--'                    (SELECT indid '+
--'                   FROM sysindexkeys '+
--'                   WHERE (id = a.id) AND (colid in '+
--'                             (SELECT colid '+
--'                            FROM syscolumns '+
--'                            WHERE (id = a.id) AND (name = a.name))))))) AND '+
--'        (xtype = '+char(39)+'PK'+char(39)+'))>0 then '+char(39)+'√'+char(39)+' else '+char(39)+''+char(39)+' end) N'+char(39)+'主键'+char(39)+', '+
' b.name N'+char(39)+'类型'+char(39)+' '+
--' a.length N'+char(39)+'占用字节数'+char(39)+', '+
--' COLUMNPROPERTY(a.id,a.name,'+char(39)+'PRECISION'+char(39)+') as N'+char(39)+'长度'+char(39)+', '+
--' isnull(COLUMNPROPERTY(a.id,a.name,'+char(39)+'Scale'+char(39)+'),0) as N'+char(39)+'小数位数'+char(39)+', '+
--' (case when a.isnullable=1 then '+char(39)+'√'+char(39)+'else '+char(39)+''+char(39)+' end) N'+char(39)+'允许空'+char(39)+', '+
--' isnull(e.text,'+char(39)+''+char(39)+') N'+char(39)+'默认值'+char(39)+', '+
--' isnull(g.[value],'+char(39)+''+char(39)+') AS N'+char(39)+'字段说明'+char(39)+' '+
--'--into ##tx '+
' '+
' FROM  syscolumns  a left join systypes b  '+
'on  a.xtype=b.xusertype '+
'inner join sysobjects d  '+
'on a.id=d.id  and  d.xtype='+char(39)+'U'+char(39)+' and  d.name<>'+char(39)+'dtproperties'+char(39)+' '+
'left join syscomments e '+
'on a.cdefault=e.id '+
'left join sysproperties g '+
'on a.id=g.id AND a.colid = g.smallid '

exec(@Sql)

原文地址:https://www.cnblogs.com/jhabb/p/1881463.html