SQL Server 清空或删除所有数据库表中的数据
方法一:
--生成數(shù)據(jù)庫(kù)腳本的方法最快,處理的也最好???
?? sql2000企業(yè)管理器 ?
? ? ? --右鍵要清理的數(shù)據(jù)庫(kù) ?
? ? ? --所有任務(wù) ?
? ? ? --生成SQL腳本 ?
? ? ? --<常規(guī)>里選擇"生成全部對(duì)象腳本"","在腳本文件中包含說明性標(biāo)題"選上 ?
? ? ? --<設(shè)置格式>里,將"包含擴(kuò)展屬性",選上 ?
? ? ? --<選項(xiàng)>中,將"表腳本選項(xiàng)"中的內(nèi)容全部選擇上 ?
? ? ? --<選項(xiàng)>中,全選 ?
? ? ? --其他所有的選項(xiàng)保持默認(rèn)值 ?
? ? ? --然后確定,將其保存成一個(gè).sql文件???
?? 然后斷開對(duì)對(duì)要清空數(shù)據(jù)庫(kù)的連接,查詢分析器中執(zhí)行上面的sql文件就可以了.
方法二:
?2use?databasename?
?3--第一部分,生成建立外鍵的語(yǔ)句保存到#tmp
?4declare?@name?varchar(200),@tmp1?varchar(500),@tmp2?varchar(500)
?5
?6create?table?#tmp
?7(
?8string?varchar(8000)
?9)
10
11SELECT??表名稱=object_name(b.fkeyid)
12?,外鍵名稱=a.name
13?,引用的列名=(SELECT?name?FROM?syscolumns?WHERE?colid=b.fkey?AND?id=b.fkeyid)
14?,引用的表名=object_name(b.rkeyid)
15?,已引用的列名=(SELECT?name?FROM?syscolumns?WHERE?colid=b.rkey?AND?id=b.rkeyid)
16into?#t?FROM?sysobjects?a
17?join?sysforeignkeys?b?on?a.id=b.constid
18?join?sysobjects?c?on?a.parent_obj=c.id
19where?a.xtype='f'?AND?c.xtype='U'
20
21declare?cur_test?cursor?for?
22?select?a.name?from?sysobjects?a?join?sysobjects?c?on?a.parent_obj=c.id?where?a.xtype='f'?and?c.xtype='U'
23open?cur_test
24FETCH?NEXT?FROM?cur_test?INTO?@name
25WHILE?(@@fetch_status?<>?-1)
26BEGIN
27?IF?(@@fetch_status?<>?-2)
28?BEGIN
29??select?@tmp1='',@tmp2=''
30??select?@tmp1=@tmp1+'['+引用的列名+'],',@tmp2=@tmp2+'['+已引用的列名+'],'?from?#t?where?外鍵名稱=@name
31??insert?into?#tmp?select?top?1?'ALTER?TABLE?[DBO].['+表名稱+']?ADD?CONSTRAINT?['+@name+']?FOREIGN?KEY?(?'+left(@tmp1,len(@tmp1)-1)+'?)?REFERENCES?['+引用的表名+']?(?'+left(@tmp2,len(@tmp2)-1)+'?)'?from?#t?where?外鍵名稱=@name
32?END
33?FETCH?NEXT?FROM?cur_test?INTO?@name
34END
35
36CLOSE?cur_test
37DEALLOCATE?cur_test
38drop?table?#t
39
40--第二部分,刪除所有外鍵
41DECLARE?@STRING?VARCHAR(8000)
42WHILE?EXISTS(SELECT?NAME?FROM?SYSOBJECTS?WHERE?TYPE='F')
43BEGIN
44?SELECT?@STRING='ALTER?TABLE?'+B.NAME+'?DROP?CONSTRAINT?'+A.NAME+CHAR(13)
45??FROM?(SELECT?PARENT_OBJ,NAME?FROM?SYSOBJECTS?WHERE?TYPE='F')?A,
46????????(SELECT?ID,NAME?FROM?SYSOBJECTS?WHERE?OBJECTPROPERTY(ID,?N'ISUSERTABLE')?=?1)?B
47????WHERE?A.PARENT_OBJ=B.ID
48?EXEC(@STRING)
49END
50
51--第三部分,刪除所有表的記錄,并且把identity復(fù)位
52exec?sp_msforeachtable?"truncate?table??"
53
54--第四部分,執(zhí)行#tmp里面的建立外鍵的語(yǔ)句,恢復(fù)外鍵
55declare?cur_test2?cursor?for?select?string?from?#tmp
56
57open?cur_test2
58FETCH?NEXT?FROM?cur_test2?INTO?@string
59WHILE?(@@fetch_status?<>?-1)
60BEGIN
61?IF?(@@fetch_status?<>?-2)
62?BEGIN
63??exec(@string)
64??PRINT?@STRING
65?END
66?FETCH?NEXT?FROM?cur_test2?INTO?@string
67END
68
69CLOSE?cur_test2
70DEALLOCATE?cur_test2
71
72drop?table?#tmp
73
74
from: http://topic.csdn.net/t/20040615/16/3094555.html#
轉(zhuǎn)載于:https://www.cnblogs.com/emanlee/archive/2007/09/01/878584.html
總結(jié)
以上是生活随笔為你收集整理的SQL Server 清空或删除所有数据库表中的数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有的日期输入框,可直接调用javascr
- 下一篇: Android——Fragment实例精