成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

最簡單刪除SQL Server中所有數據的方法

原創
數據庫 SQL Server
其實刪除數據庫中數據的方法并不復雜,為什么我還要多此一舉呢,一是我這里介紹的是刪除數據庫的所有數據,因為數據之間可能形成相互約束關系,刪除操作可能陷入死循環,二是這里使用了微軟未正式公開的sp_MSForEachTable存儲過程。

【51CTO.com獨家特稿】其實刪除數據庫中數據的方法并不復雜,為什么我還要多此一舉呢,一是我這里介紹的是刪除數據庫的所有數據,因為數據之間可能形成相互約束關系,刪除操作可能陷入死循環,二是這里使用了微軟未正式公開的sp_MSForEachTable存儲過程。

也許很多讀者朋友都經歷過這樣的事情:要在開發數據庫基礎上清理一個空庫,但由于對數據庫結構缺乏整體了解,在刪除一個表的記錄時,刪除不了,因為可能有外鍵約束,一個常見的數據庫結構是一個主表,一個子表,這種情況下一般都得先刪除子表記錄,再刪除主表記錄。
說道刪除數據記錄,往往馬上會想到的是delete和truncate語句,但在遇到在兩個或多個表之間存在約束的話,這兩個語句可能都會失效,而且最要命的是這兩個命令都只能一次操作一個表。那么真正遇到要刪除SQL Server數據庫中所有記錄時,該怎么辦呢?有兩個選擇:

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

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

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

CREATE PROCEDURE sp_DeleteAllData
AS
EXEC 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

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

你可以在任何數據庫上運行這個存儲過程,當然不要在生成數據庫上運行,可別怪我沒告訴你!不管怎樣,還是先備份一下數據庫,使用備份數據庫還原,然后再運行該存儲過程,呵呵,即使是一個大型數據庫,也要不多長時間,你的數據庫就成一個空庫了,有點怕怕的感覺!

【編輯推薦】

  1. 深入SQL Server 2008
  2. SQL Server2008新特性 FILESTREAM
  3. SQL Server2008管理和開發的效能
責任編輯:彭凡 來源: 51CTO.com
相關推薦

2010-11-10 11:51:04

SQL SERVER級

2010-09-03 13:40:24

SQL刪除

2010-10-22 16:48:49

SQL刪除所有表數據

2010-11-10 13:54:27

SQL SERVER自

2010-10-20 10:19:33

sql server刪

2010-11-10 11:54:32

SQL SERVER刪

2010-09-03 11:00:47

SQL刪除

2010-06-28 14:41:47

SQL Server海

2010-11-10 13:03:15

SQL Server存

2010-09-02 11:38:44

SQL刪除

2010-09-01 17:19:49

SQL刪除TABLE

2010-07-01 12:29:27

SQL Server重

2010-09-03 13:51:10

SQL刪除約束

2010-09-02 11:34:51

SQL刪除

2011-03-28 09:40:41

2010-07-21 15:30:40

SQL Server

2010-11-12 11:44:37

SQL Server刪

2010-11-10 13:42:32

SQL Server刪

2010-09-03 11:05:59

SQL刪除

2010-10-22 17:22:05

sql server刪
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品区 | 日韩一区二区三区在线视频 | 欧美精品二区 | 在线观看av中文字幕 | 鸡毛片 | 国产一区二区欧美 | 小早川怜子xxxxaⅴ在线 | 国产在线精品一区 | 欧美成人精品一区 | 国产午夜精品一区二区三区嫩草 | 97福利在线 | 国产在线精品一区二区三区 | 亚洲成人在线免费 | 久久久久久综合 | 久久久久久黄 | 最近日韩中文字幕 | 久久久久九九九女人毛片 | 欧美一区二区三区 | 三级黄色片在线播放 | 一级大片免费 | www.日韩在线 | 亚洲成人久久久 | 成人在线视频一区 | 伊人春色在线 | 成人国产精品免费观看 | 久久久久国产精品午夜一区 | 亚洲交性 | 91精品国产一区二区三区 | 亚洲区一区二 | 国产精品夜夜春夜夜爽久久电影 | 亚洲天堂中文字幕 | 91在线一区 | 国产高清在线精品一区二区三区 | 精品一区二区三区在线观看国产 | 涩涩视频大全 | 亚洲一区二区三区免费视频 | 日韩精品免费在线观看 | av在线播放网站 | 国产精品夜夜夜一区二区三区尤 | 欧美偷偷操 | 毛片a级|