偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

教您如何簡單刪除SQLServer數(shù)據(jù)庫的所有數(shù)據(jù)

數(shù)據(jù)庫 SQL Server
下文為您介紹了使用sp_MSForEachTable存儲過程刪除SQL SERVER數(shù)據(jù)庫中所有數(shù)據(jù)的方法,供您參考,希望對您能夠有所啟示。

SQL SERVER數(shù)據(jù)庫數(shù)據(jù)之間可能形成相互約束關(guān)系,刪除操作可能會出現(xiàn)問題陷入死循環(huán),下面將為您介紹一個簡單刪除SQL SERVER數(shù)據(jù)庫數(shù)據(jù)的方法,供您參考。

也許很多讀者朋友都經(jīng)歷過這樣的事情:要在開發(fā)數(shù)據(jù)庫基礎(chǔ)上清理一個空庫,但由于對數(shù)據(jù)庫結(jié)構(gòu)缺乏整體了解,在刪除一個表的記錄時,刪除不了,因為可能有外鍵約束,一個常見的數(shù)據(jù)庫結(jié)構(gòu)是一個主表,一個子表,這種情況下一般都得先刪除子表記錄,再刪除主表記錄。

說到刪除數(shù)據(jù)記錄,往往馬上會想到的是delete和truncate語句,但在遇到在兩個或多個表之間存在約束的話,這兩個語句可能都會失效,而且最要命的是這兩個命令都只能一次操作一個表。那么真正遇到要刪除SQL Server數(shù)據(jù)庫中所有記錄時,該怎么辦呢?有兩個選擇:

1.按照先后順序逐個刪除,這個方法在表非常多的情況下顯得很不現(xiàn)實,即便是表數(shù)量不多,但約束比較多時,你還是要花費大量的時間和精力去研究其間的約束關(guān)系,然后找出先刪哪個表,再刪哪個表,最后又刪哪個表。

2.禁用所有約束,刪除所有數(shù)據(jù),最后再啟用約束,這樣就不用花時間和精力去研究什么約束了,只需要編寫一個簡單的存儲過程就可以自動完成這個任務。
從這兩個選擇中不難看出第二個選擇是最簡單有效的了,那么在使用第二個選擇時,具體該怎么實施呢?

首先得編寫代碼循環(huán)檢查所有的表,這里我推薦一個存儲過程sp_MSForEachTable,因為在微軟的官方文檔中沒有對這個存儲過程有描述,很多開發(fā)人員也許都還未曾聽說,所以你在互聯(lián)網(wǎng)上搜索得到的解決辦法大多很復雜,也許有的人會認為,既然沒有官方文檔,這個存儲過程可能會不穩(wěn)定,打心理上會排斥它,但事實并非如此。下面來先看一個完整的腳本:

CREATE PROCEDURE sp_DeleteAllDataASEXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL'EXEC sp_MSForEachTable 'DELETE FROM ?'EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'EXEC sp_MSForEachTable 'ALTER TABLE ? ENABLE TRIGGER ALL'EXEC sp_MSFOREACHTABLE 'SELECT * FROM ?'GO

這個腳本創(chuàng)建了一個命名為sp_DeleteAllData的存儲過程,前面兩行語句分別禁用約束和觸發(fā)器,第三條語句才是真正地刪除所有數(shù)據(jù),接下里的語句分別還原約束和觸發(fā)器,最后一條語句是顯示每個表中的記錄,當然這條語句也可以不要,我只是想確認一下是否清空了所有表而已。

 

責任編輯:段燃 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-10-14 10:18:28

MySQL數(shù)據(jù)庫備份

2010-09-30 11:04:47

DB2數(shù)據(jù)庫卸載

2010-09-03 14:14:16

SQL刪除

2009-03-02 16:52:59

SQL數(shù)據(jù)庫開發(fā)

2010-08-26 17:19:36

DB2數(shù)據(jù)庫備份

2010-08-25 14:42:46

DB2AIX卸載

2010-08-25 14:12:47

DB2備份恢復

2010-09-13 16:46:10

SQL Server觸

2010-09-24 18:47:23

SQL數(shù)據(jù)分頁

2010-09-30 09:42:22

DB2刪除數(shù)據(jù)

2010-08-26 14:01:59

DB2插入特殊字符

2011-03-01 09:53:18

卸載PureFTPd

2010-10-27 16:56:05

Oracle重復記錄

2011-05-13 09:42:21

2011-04-15 13:41:27

SqlServer數(shù)據(jù)復制

2010-09-13 16:19:47

Sql Server數(shù)

2010-11-23 13:29:36

MySQL數(shù)據(jù)列類型

2009-12-11 13:43:55

PHP獲得所有數(shù)據(jù)庫

2021-12-21 15:56:13

SolarWinds

2010-11-10 13:54:27

SQL SERVER自
點贊
收藏

51CTO技術(shù)棧公眾號