我要从有着1000多个表的数据库中找出里边存有数据的表,就是非空表
如果能按大小排序最好,谢谢另外还想知道,怎么从查询分析器中写指令,从所有表中找有(比如FModel字段,字段中有内容‘abcde’)的表

解决方案 »

  1.   

    sp_msforeachtable 'SELECT ''?'',COUNT(*) FROM (SELECT TOP 1 1 AS x FROM ?) a HAVING COUNT(*)>0'
      

  2.   

    bugchen888(臭虫) 要是你能给解释下语句就 好了;看来我得找被SQL的书好好练习下
      

  3.   

    select object_name(id),rowcnt from sysindexes where indid<2 and objectproperty(id,'isusertable')=1
    order by 2 desc
      

  4.   

    exec sp_spaceused [表名]--列(rows)为表的记录数、表的大小等信息
    用动态语句用也临时表,再查看临时表就行了
      

  5.   

    --用下面这个就行啦. --得到数据库中所有表的空间/记录情况 create table #tb(表名 sysname,记录数 int 
    ,保留空间 varchar(10),使用空间 varchar(10) 
    ,索引使用空间 varchar(10),未用空间 varchar(10)) insert into #tb exec sp_MSForEachTable 'EXEC sp_spaceused ''?''' select * from #tb go 
    drop table #tb 来源:http://topic.csdn.net/t/20040107/15/2642472.html#
      

  6.   

    sp_spaceused是从sysindex中取rows栏位,虽然速度快,但是这个值并不一定准确.
    所以最好还是现取Count(*).sp_msforeachtable是当前数据库中的对每个Table执行同一句SQL的.