批量刪除Sql Server對象(表,存儲過程,觸發器)


先在系統表中找到要處理的表名或者是存儲過程的名字,在用游標對其進行處理

PS:SqlServer 2000使用的是系統表是sysobjects,類型字段是:xtype; SqlServer 2005以上版本的系統表是Sys.Objects,類型字段是Type

本文中以Sql2005為例,Sql2000版本請自行按照上述說明進行替換


注意  sys.objects 中type的值不同 刪除命令是不同的

如刪除存儲過程用drop PROCEDURE PROCEDURENAME 刪除表用 drop table  tablename 刪除觸發器用Drop Trigger TriggerName

sys.objects.type的值表示的意思如下表:
C:檢查約束。
D:默認的約束
F:外鍵約束
L:日志
P:存儲過程
PK:主鍵約束
RF:復制過濾存儲過程
S:系統表格
TR:觸發器
U:用於表格。
UQ:獨特的約束。

批量處理的代碼如下:
DECLARE cursorname cursor for select 'drop PROCEDURE  '+name from sys.objects where name like 'xx%' and xtype = 'p' --刪除對應的存儲過程
DECLARE cursorname cursor for select 'drop Trigger'+name from sys.objects where name like 'xx%' and xtype = 'tr' --刪除對應的觸發器

open cursorname
declare @curname sysname
fetch next from cursorname into @curname
while(@@fetch_status=0)
  begin
 exec(@curname)
fetch next from cursorname into @curname
end
close cursorname
deallocate cursorname 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM