declare @tname varchar(8000)set @tname=''select @tname=@tname + Name + ',' from sysobjects where xtype='U'select @tname='drop table ' + left(@tname,len(@tname)-1)exec(@tname)
drop database A create database A
use A exec sp_msforeachtable ' drop table ?'
--删除外键约束 DECLARE c1 cursor for select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; ' from sysobjects where xtype = 'F' open c1 declare @c1 varchar(8000) fetch next from c1 into @c1 while(@@fetch_status=0) begin exec(@c1) fetch next from c1 into @c1 end close c1 deallocate c1 --删除表 DECLARE c2 cursor for select 'drop table ['+name +']; ' from sysobjects where xtype = 'u' open c2 declare @c2 varchar(8000) fetch next from c2 into @c2 while(@@fetch_status=0) begin exec(@c2) fetch next from c2 into @c2 end close c2 deallocate c2exec sp_msforeachtable @command1="truncate table ? ;", @whereand='and schema_id = (select schema_id from sys.schemas where [name] not in(''khda'',''khzh'',''khzmx''))'
对于更高的版本,比如SQL2008,建议你先筛选出需要drop的表,否则 你可以drop DB。USE DB_name go select 'drop table '+name from sys.objects where type='u'
1.declare @tname varchar(8000)set @tname='' select @tname=@tname + Name + ',' from sysobjects where xtype='U' select @tname='drop table ' + left(@tname,len(@tname)-1) exec(@tname)2. drop database A create database A
3.use Test exec sp_msforeachtable ' drop table ?'4.exec sp_msforeachtable @command1='drop table ?'
select 'drop table ' +stuff((select ','+name from sys.objects where type='u' for XML path('')),1,1,'' )
本帖最后由 roy_88 于 2011-10-07 17:56:34 编辑
declare @sql varchar(5000) set @sql = '' select @sql = @sql +'delete from '+[name]+';' from sysobjects where xtype='u' print @sql exec(@sql
create database A
exec sp_msforeachtable ' drop table ?'
DECLARE c1 cursor for
select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; '
from sysobjects
where xtype = 'F'
open c1
declare @c1 varchar(8000)
fetch next from c1 into @c1
while(@@fetch_status=0)
begin
exec(@c1)
fetch next from c1 into @c1
end
close c1
deallocate c1
--删除表
DECLARE c2 cursor for
select 'drop table ['+name +']; '
from sysobjects
where xtype = 'u'
open c2
declare @c2 varchar(8000)
fetch next from c2 into @c2
while(@@fetch_status=0)
begin
exec(@c2)
fetch next from c2 into @c2
end
close c2
deallocate c2exec sp_msforeachtable @command1="truncate table ? ;",
@whereand='and schema_id = (select schema_id from sys.schemas where [name] not in(''khda'',''khzh'',''khzmx''))'
@whereand='and schema_id = (select schema_id from sys.schemas))'
go
select 'drop table '+name from sys.objects where type='u'
select @tname=@tname + Name + ',' from sysobjects
where xtype='U'
select @tname='drop table ' + left(@tname,len(@tname)-1)
exec(@tname)2. drop database A
create database A
3.use Test
exec sp_msforeachtable ' drop table ?'4.exec sp_msforeachtable @command1='drop table ?'
set @sql = ''
select @sql = @sql +'delete from '+[name]+';' from sysobjects where xtype='u'
print @sql
exec(@sql