关于删除SQL Server一些对象的SQL语句

在我们学习工作生活,可能需要将数据对象批量的删除;

以下SQL语句,可能会帮到我们,在SQL Server 2000/2005 测试通过;

 

[sql][/sql] view plaincopyprint?

  1. declare @objname as varchar(100)
  2. declare @subobject as varchar(100)
  3. declare @sql as varchar(300)
  4. –delete all constraints or foreign keys
  5. while exists (select a.[name] as tablename ,b.[name] as objname
  6.               from sysobjects a,(select [name],parent_obj from sysobjects where [type]=’D’ or [type]= ‘F’) b
  7.               where a.id = b.parent_obj)
  8. begin
  9. select top 1 @objname  = a.[name] ,@subobject = b.[name]
  10.               from sysobjects a,(select [name],parent_obj from sysobjects where [type]=’D’ or [type]= ‘F’) b
  11.               where a.id = b.parent_obj
  12. select @sql = ‘alter table ‘ + @objname + ‘ drop constraint ‘ + @subobject
  13. exec(@sql)
  14. end
  15. –delete all views
  16. while exists (select * from sysobjects where [type]=’V’ and id > 0)
  17. begin
  18. select top 1 @objname = [name] from sysobjects where [type]=’V’ and id > 0
  19. select @sql = ‘drop view ‘ + @objname
  20. exec(@sql)
  21. end
  22. –delete all procedures
  23. while exists (select * from sysobjects where [type]=’P’ and id >0)
  24. begin
  25. select top 1 @objname = [name] from sysobjects where [type]=’P’ and id >0
  26. select @sql = ‘drop proc ‘ + @objname
  27. exec(@sql)
  28. end
  29. –delete all tables
  30. while exists (select * from sysobjects where [type]=’U’)
  31. begin
  32. select top 1 @objname = [name] from sysobjects where [type]=’U’
  33. select @sql = ‘drop table ‘ + @objname
  34. exec(@sql)
  35. end

标签