SQL Server 刪除數據庫所有表和所有存儲過程


場景:
SQL Server中,需要刪除所有表或所有存儲過程時,手動的方式只能逐個進行刪除,耗個人時間,所以想弄個語句來實現這樣的需求。
 

如果由於外鍵約束刪除table失敗,則先刪除所有約束:

--/第1步**********刪除所有表的外鍵約束*************************/

 1 DECLARE c1 cursor for 
 2     select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; '
 3     from sysobjects 
 4     where xtype = 'F'
 5 open c1
 6 declare @c1 varchar(8000)
 7 fetch next from c1 into @c1
 8 while(@@fetch_status=0)
 9     begin 
10         exec(@c1)
11         fetch next from c1 into @c1
12     end
13 close c1
14 deallocate c1
15 go

 

--/第2步**********刪除所有表*************************/

1 use 數據庫
2 declare @tname varchar(8000)
3 set @tname=''
4 select @tname=@tname + Name + ',' from sysobjects where xtype='U'
5 select @tname='drop table ' + left(@tname,len(@tname)-1)
6 exec(@tname)
7 go

刪除所有的存儲過程同理可得,但不需要走第一步,只需將第2步的代碼的where xtype='U' 改成 where xtype='P',drop table 改成 drop Procedure

sysobjects的xtype代表含義:

在數據庫內創建的每個對象(約束、默認值、日志、規則、存儲過程等)在表中占一行。只有在 tempdb 內,每個臨時對象才在該表中占一行。 

 


列名 數據類型 描述 
name sysname 對象名。 
Id int 對象標識號。 
xtype char(2) 對象類型。可以是下列對象類型中的一種: 
C = CHECK 約束 
D = 默認值或 DEFAULT 約束 
F = FOREIGN KEY 約束 
L = 日志 
FN = 標量函數 
IF = 內嵌表函數 
P = 存儲過程 
PK = PRIMARY KEY 約束(類型是 K) 
RF = 復制篩選存儲過程 
S = 系統表 
TF = 表函數 
TR = 觸發器 
U = 用戶表 
UQ = UNIQUE 約束(類型是 K) 
V = 視圖 
X = 擴展存儲過程 

uid smallint 所有者對象的用戶 ID。 
info smallint 保留。僅限內部使用。 
status int 保留。僅限內部使用。 
base_schema_ 
ver int 保留。僅限內部使用。 
replinfo int 保留。供復制使用。 
parent_obj int 父對象的對象標識號(例如,對於觸發器或約束,該標識號為表 ID)。 
crdate datetime 對象的創建日期。 
ftcatid smallint 為全文索引注冊的所有用戶表的全文目錄標識符,對於沒有注冊的所有用戶表則為 0。 
schema_ver int 版本號,該版本號在每次表的架構更改時都增加。 
stats_schema_ 
ver int 保留。僅限內部使用。 
type char(2) 對象類型。可以是下列值之一: 
C = CHECK 約束 
D = 默認值或 DEFAULT 約束 
F = FOREIGN KEY 約束 
FN = 標量函數 
IF = 內嵌表函數 
K = PRIMARY KEY 或 UNIQUE 約束 
L = 日志 
P = 存儲過程 
R = 規則 
RF = 復制篩選存儲過程 
S = 系統表 
TF = 表函數 
TR = 觸發器 
U = 用戶表 
V = 視圖 
X = 擴展存儲過程 

userstat smallint 保留。 
sysstat smallint 內部狀態信息。 
indexdel smallint 保留。 
refdate datetime 留作以后使用。 
version int 留作以后使用。 
deltrig int 保留。 
instrig int 保留。 
updtrig int 保留。 
seltrig int 保留。 
category int 用於發布、約束和標識。 
cache smallint 保留。

 


免責聲明!

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



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