SQLserver刪除某數(shù)據(jù)庫(kù)中所有表實(shí)現(xiàn)思路
方便刪除數(shù)據(jù)庫(kù)中所有的數(shù)據(jù)表,清空數(shù)據(jù)庫(kù),有些有約束,不能直接delete,需要先刪除庫(kù)中的約束,代碼如下
--刪除所有約束
DECLARE c1 cursor for
select'alter table ['+ object_name(parent_obj)+'] drop constraint ['+name+']; '
from sysobjects
where xtype ='F'
open c1
declare @c1 varchar(8000)
fetch nextfrom c1 into@c1
while(@@fetch_status=0)
begin
exec(@c1)
fetch nextfrom c1 into@c1
end
close c1
deallocate c1
--刪除數(shù)據(jù)庫(kù)所有表
declare @tname varchar(8000)
set@tname=''
select@tname=@tname+Name+','from sysobjects where xtype='U'
select@tname='drop table '+ left(@tname,len(@tname)-1)
exec(@tname)
然后清空數(shù)據(jù)庫(kù)中的所有表:
如果需要?jiǎng)h除存儲(chǔ)過(guò)程等只需要將上面的做如下修改就行了的where xtype='U' 改成 where xtype='P',drop table 改成 drop Procedure
sysobjects的xtype代表含義:
在數(shù)據(jù)庫(kù)內(nèi)創(chuàng)建的每個(gè)對(duì)象(約束、默認(rèn)值、日志、規(guī)則、存儲(chǔ)過(guò)程等)在表中占一行。只有在 tempdb 內(nèi),每個(gè)臨時(shí)對(duì)象才在該表中占一行。
列名 數(shù)據(jù)類型 描述
name sysname 對(duì)象名。
Id int 對(duì)象標(biāo)識(shí)號(hào)。
xtype char(2) 對(duì)象類型??梢允窍铝袑?duì)象類型中的一種:
C = CHECK 約束
D = 默認(rèn)值或 DEFAULT 約束
F = FOREIGN KEY 約束
L = 日志
FN = 標(biāo)量函數(shù)
IF = 內(nèi)嵌表函數(shù)
P = 存儲(chǔ)過(guò)程
PK = PRIMARY KEY 約束(類型是 K)
RF = 復(fù)制篩選存儲(chǔ)過(guò)程
S = 系統(tǒng)表
TF = 表函數(shù)
TR = 觸發(fā)器
U = 用戶表
UQ = UNIQUE 約束(類型是 K)
V = 視圖
X = 擴(kuò)展存儲(chǔ)過(guò)程
uid smallint 所有者對(duì)象的用戶 ID。
info smallint 保留。僅限內(nèi)部使用。
status int 保留。僅限內(nèi)部使用。
base_schema_
ver int 保留。僅限內(nèi)部使用。
replinfo int 保留。供復(fù)制使用。
parent_obj int 父對(duì)象的對(duì)象標(biāo)識(shí)號(hào)(例如,對(duì)于觸發(fā)器或約束,該標(biāo)識(shí)號(hào)為表 ID)。
crdate datetime 對(duì)象的創(chuàng)建日期。
ftcatid smallint 為全文索引注冊(cè)的所有用戶表的全文目錄標(biāo)識(shí)符,對(duì)于沒(méi)有注冊(cè)的所有用戶表則為 0。
schema_ver int 版本號(hào),該版本號(hào)在每次表的架構(gòu)更改時(shí)都增加。
stats_schema_
ver int 保留。僅限內(nèi)部使用。
type char(2) 對(duì)象類型??梢允窍铝兄抵唬?
C = CHECK 約束
D = 默認(rèn)值或 DEFAULT 約束
F = FOREIGN KEY 約束
FN = 標(biāo)量函數(shù)
IF = 內(nèi)嵌表函數(shù)
K = PRIMARY KEY 或 UNIQUE 約束
L = 日志
P = 存儲(chǔ)過(guò)程
R = 規(guī)則
RF = 復(fù)制篩選存儲(chǔ)過(guò)程
S = 系統(tǒng)表
TF = 表函數(shù)
TR = 觸發(fā)器
U = 用戶表
V = 視圖
X = 擴(kuò)展存儲(chǔ)過(guò)程
userstat smallint 保留。
sysstat smallint 內(nèi)部狀態(tài)信息。
indexdel smallint 保留。
refdate datetime 留作以后使用。
version int 留作以后使用。
deltrig int 保留。
instrig int 保留。
updtrig int 保留。
seltrig int 保留。
category int 用于發(fā)布、約束和標(biāo)識(shí)。
cache smallint 保留。
相關(guān)文章
SQL Server 提取數(shù)字、提取英文、提取中文的sql語(yǔ)句
這篇文章主要介紹了SQL Server 提取數(shù)字、提取英文、提取中文 ,需要的朋友可以參考下2014-10-10bak文件怎么打開(kāi) 2000w數(shù)據(jù)怎么打開(kāi)?
這篇文章主要介紹了sqlserver數(shù)據(jù)庫(kù)bak文件如何恢復(fù)打開(kāi)的方法,需要的朋友可以參考下2014-02-02Sql Server 創(chuàng)建數(shù)據(jù)庫(kù)腳本Create DATABASE
這篇文章主要介紹了Sql Server 創(chuàng)建數(shù)據(jù)庫(kù)腳本語(yǔ)句Create DATABASE的使用,需要的朋友可以參考下2014-08-08Microsoft SQL Server 2012 數(shù)據(jù)庫(kù)安裝圖解教程
這篇文章主要為大家介紹下Microsoft SQL Server 2012 數(shù)據(jù)庫(kù)安裝教程,需要的朋友可以參考下2013-11-11淺談SQL Server 對(duì)于內(nèi)存的管理[圖文]
理解SQL Server對(duì)于內(nèi)存的管理是對(duì)于SQL Server問(wèn)題處理和性能調(diào)優(yōu)的基本,本篇文章講述SQL Server對(duì)于內(nèi)存管理的內(nèi)存原理2013-01-01MSSQL數(shù)據(jù)庫(kù)遷移之用戶名問(wèn)題
數(shù)據(jù)庫(kù)A有用戶A,有一些用戶A創(chuàng)建的表和SP。遷移時(shí)將data目錄下的MDF和LDF移到新的MSSQL服務(wù)器上,通過(guò)附加數(shù)據(jù)庫(kù)的功能將數(shù)據(jù)庫(kù)恢復(fù)。2010-05-05sql 取兩值之間的數(shù)據(jù)方法(例:100-200之間的數(shù)據(jù))
這里只列舉3種我測(cè)試的方法,還有別的方案就由高手補(bǔ)上了,3種方案的效率也不競(jìng)相同,我一直認(rèn)為not in效率不好,但在這里使用not in速度最快,請(qǐng)高手補(bǔ)充說(shuō)明,謝謝2010-05-05