如何清空一个MS SQL 2008 数据库中所有表中的所有记录

解决方案 »

  1.   

    declare @sql nvarchar(4000)
    set @sql=''
    select @sql=@sql+'IF object_id('''+name+''') is not null
    delete from '+name+';
    ' from sys.objects where type='u'
    print @sql
    exec(@sql)
      

  2.   


    declare cursor1 cursor for (select name from sys.tables)
    declare @name varchar(200)
    declare @sql  varchar(200)
    open cursor1 
    fetch next from cursor1 into @name
    while(@@fetch_status<>-1)
    begin
    set @sql=N'truncate table '+@name
    print @sql
    execute sp_executesql @sql
    fetch next from cursor1 into @name
    end
      

  3.   

    --先禁用所有外键约束  
    exec sp_msforeachtable 'alter table ? nocheck CONSTRAINT all' --然后删除数据  
    exec sp_msforEachTable 'TRUNCATE TABLE?'  --再启用所有外键约束  
    exec sp_msforeachtable 'alter table ? check constraint all'
      

  4.   

    还是josy考虑周到,首先肯定要删除表之间的关系,然后才能删除数据的。不然肯定会报错的。
      

  5.   

    学习中,以前都是delete批处理
    2008没有用过呢,挺好的
      

  6.   

    谢谢!
    请问谁能写一个通用的Script (综合"百年树人"的想法)
      

  7.   

    Can I use Database Publishing Wizard 1.3 to Generate Script for only Schema then run the script to recreate the database?and does the way to fit any case?
      

  8.   

    參照
    SQL2005自动生成数据库的清空脚本
    http://blog.csdn.net/roy_88/archive/2008/05/21/2467748.aspx
      

  9.   

    sp_msforeachtable 'delete from ?'

    sp_msforeachtable 'truncate table ?'
    多执行几次
      

  10.   

    select 'TRUNCATE TABLE + [name]
    from sys.objects where type='u'复制并运行得到的结果。
      

  11.   

    select 'TRUNCATE TABLE' + [name]
    from sys.objects where type='u'
    复制并运行得到的结果,刚才漏了个'。