这是邹老大写的关于表结构的详细信息的语句--查询表结构信息
SELECT 
表名=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

解决方案 »

  1.   

    sp_spaceused '表名'
    就可以啦
      

  2.   

    哦,不好意思,理解错了。这个可以查看数据库中表的空间使用情况。exec sp_MSForEachTable 
    @precommand=N'
    create table ##(
    表名 sysname,
    记录数 int,
    保留空间 Nvarchar(10),
    使用空间 varchar(10),
    索引使用空间 varchar(10),
    未用空间 varchar(10))',
    @command1=N'insert ## exec sp_spaceused ''?''',
    @postcommand=N'select * from ## Where 记录数=0 drop table ##'
      

  3.   


    declare @id        int                        
    declare @type        character(2)                 
    declare        @pages        
    int                        
    declare @dbname sysname
    declare @dbsize dec(15,0)
    declare @bytesperpage        dec(15,0)
    declare @pagesperMB                dec(15,0)create table #spt_space
    (
            objid                int null,
            rows                int null,
            reserved        dec(15) null,
            data                dec(15) null,
            indexp                dec(15) null,
            unused                dec(15) null
    )set nocount on-- Create a cursor to loop through the user   tables
    declare c_tables cursor for
    select        id
    from        sysobjects
    where        xtype = 'U'open c_tablesfetch next from c_tables
    into @idwhile @@fetch_status = 0
    begin        /* Code from sp_spaceused */
            insert into #spt_space (objid, reserved)
                    select objid = @id, sum(reserved)
                            from sysindexes
                                    where indid in (0, 1, 255)
                                            and id = @id        select @pages = sum(dpages)
                            from sysindexes
                                    where indid < 2
                                            and id = @id
            select @pages = @pages + isnull(sum(used), 0)
                    from sysindexes
                            where indid = 255
                                    and id = @id
            update #spt_space
                    set data = @pages
            where objid = @id
            /* index: sum(used) where indid in (0, 1, 255) - data */
            update #spt_space
                    set indexp = (select sum(used)
                                    from sysindexes
                                    where indid in (0, 1, 255)
                                    and id = @id)
                                - data
                    where objid = @id        /* unused: sum(reserved) - sum(used) where indid in (0, 1, 255) */
            update #spt_space
                    set unused = reserved
                                    - (select sum(used)
                                            from sysindexes
                                                    where indid in (0, 1, 255)
                                                    and id = @id)
                    where objid = @id        update #spt_space
                    set rows = i.rows
                            from sysindexes i
                                    where i.indid < 2
                                    and i.id = @id
                                    and objid = @id        fetch next from c_tables
            into @id
    endselect         TableName = (select left(name,60) from sysobjects where id = objid),
            Rows = convert(char(11), rows),
            ReservedKB = ltrim(str(reserved * d.low / 1024.,15,0) + ' ' + 'KB'),
            DataKB = ltrim(str(data * d.low / 1024.,15,0) + ' ' + 'KB'),
            IndexSizeKB = ltrim(str(indexp * d.low / 1024.,15,0) + ' ' + 'KB'),
            UnusedKB = ltrim(str(unused * d.low / 1024.,15,0) + ' ' + 'KB')
                    
    from         #spt_space, master.dbo.spt_values d
    where         d.number = 1
    and         d.type = 'E'
    order by reserved desc 
    drop table #spt_space
    close c_tables
    deallocate c_tables
    exec sp_msforeachtable 'select ''?'',count(*) from ?'