drop all tables in database by T-SQL in SQLServer

firstly I searched this topic in Google, but unfortunately, I cannot find any valueable article to
resolve it. someone think give an " drop database ; create database" idea.but always it doesn't match for our true intention. the reason is that this solution will delete all the related objects and even serious, the security (previleges grant) are also deleted. It make the table restore difficult.
in fact,it is really easy to implement it by an T-SQL.
following is my solution. (enviorment windows2003+SQL SERVER2005).
 
--it's my first time to write T-SQL function,share it for commemoration:-)
--delete all tables under current DB
--written by shenjian @ 2006/03/17
--if "foreign key constraint error" occur,just ignore it.
declare
   @tblName varchar(2000),
   @count int ,
   @ExecStr varchar(2000),
   @localcounter int
set @count=0
set @localcounter=1 --only need a <>0 value to start the loop,no care what it is
while @localcounter<>0 --to deal the foreign key constraint
begin 
    set @localcounter=0
    --cursor should be cycled for next time
    declare curName cursor for
    select name from sys.tables order by name
 open curName
 fetch curName into @tblName   
 while @@fetch_status =0
 begin
  set @localcounter=@localcounter+1
  select @ExecStr='drop table " '+@tblName+'"'
  --print('SQL string:'+@ExecStr)
  EXEC (@ExecStr)
        if(@@error<>0)
  begin         
   print(@@error)
  end
  fetch curName into @tblName
 end
 set @count=@count+@localcounter
    close curName
    deallocate curName
end
print('.....drop all table success....')
print('drop '+convert(varchar(5),@count)+' tables')
go
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值