呵呵,没错,用游标,先从sysobjects中找到所有的用户表

解决方案 »

  1.   

    declare @sql varchar(8000)
    set @sql=''
    select top 20 @sql=@sql+' if not exists(select 1 from ['+name+']) print '''+name+'不存在记录''' from sysobjects where xtype='U'
    --print @sql
    exec(@sql)
      

  2.   

    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+' if not exists(select 1 from ['+name+']) print '''+name+'不存在记录''' from sysobjects where xtype='U'
    exec(@sql)
      

  3.   

    Declare @Table nvarchar(50)
    Declare MCur Cursor for 
    select name from sysobjects Where xtype = 'U'open MCur 
    Fetch next from MCur Into @Table while @@Fetch_status = 0 
        Begin
      Exec ('IF not exists (Select 1 From  ' + @Table  + ') 
                    print N''' + @Table +'''')
    Fetch Next From MCur into @Table 
        Endclose MCur 
    Deallocate MCur 
      

  4.   

    --得到数据库中所有表的空间/记录情况
    Create Table #T(表名 Sysname,记录数 Int
    ,保留空间 Varchar(10),使用空间 Varchar(10)
    ,索引使用空间 Varchar(10),未用空间 Varchar(10))
    Insert Into #T EXEC sp_MSForEachTable 'EXEC sp_spaceused ''?'''
    --查询没有记录的表名
    Select * From #T Where 记录数=0
    GO
    Drop Table #T
      

  5.   

    to :
    vivianfdlpw() 
    你的这种写法只适用于表比较少的数据库。
    假如数据库中的表超过500 个恐怕就不能执行了。技术交流,如有得罪,请勿见怪!