sql server 删除所有表、视图、存储过程
如果由于外键约束删除table失败,则先删除所有约束:
--/第1步**********删除所有表的外键约束*************************/DECLARE c1 cursor forselect 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; 'from sysobjectswhere xtype = 'F'open c1declare @c1 varchar(8000)fetch next from c1 into @c1while(@@fetch_status=0)beginexec(@c1)fetch next from c1 into @c1endclose c1deallocate c1--/第2步**********删除所有表*************************/use 数据库名(是要删除表的所在的那个数据库的名称)GOdeclare @sql varchar(8000)while (select count(*) from sysobjects where type='U')>0beginSELECT @sql='drop table ' + nameFROM sysobjectsWHERE (type = 'U')ORDER BY 'drop table ' + nameexec(@sql)end--删除所有的存储过程同理可得,但不需要走第一步,只需将第2步的代码的where type='U' 改成 where type='P',drop table 改成 drop Procedure。
删除表
use 数据库名declare mycur cursor local for select [name] from dbo.sysobjects where xtype='U'declare @name varchar(100)OPEN mycurFETCH NEXT from mycur into @nameWHILE @@FETCH_STATUS = 0 BEGINexec('drop table ' + @name)FETCH NEXT from mycur into @nameENDCLOSE mycur |
删除视图
use 数据库名declare mycur cursor local for select [name] from dbo.sysobjects where xtype='V'declare @name varchar(100)OPEN mycurFETCH NEXT from mycur into @nameWHILE @@FETCH_STATUS = 0 BEGINexec('drop VIEW ' + @name)FETCH NEXT from mycur into @nameENDCLOSE mycur |
删除存储过程
use eldbsdeclare mycur cursor local for select [name] from dbo.sysobjects where xtype='P'declare @name varchar(100)OPEN mycurFETCH NEXT from mycur into @nameWHILE @@FETCH_STATUS = 0 BEGINexec('drop PROCEDURE ' + @name)FETCH NEXT from mycur into @nameENDCLOSE mycur |
浙公网安备 33010602011771号