2009-11-30 14 views
0

我正在設計一個帶有SQL數據庫的標準ASP.Net站點。我有一個數據庫模式和測試期間,我正在改變其他任務的數據類型,其中包含的數據真的不是那麼重要。刪除數據庫中的所有內容並從頭開始重建的最快方法?

我不斷收到錯誤,因爲舊數據與新規則不匹配。這並不重要,我很樂意清除一切,但目前,我必須將數據庫導出/發佈到.sql文件,然後從頭開始導入 - 這非常耗時。

是否有我錯過的快捷按鈕/功能,可以讓您將自動編號/ ID重置爲1並刪除所有內容,或者只是加快我目前的操作?

回答

3

您可以選擇幾個選項,「最快」取決於您的數據庫。

要首先回答關於種子等問題 - TRUNCATE TABLE將刪除表中的所有信息(非常快,因爲它沒有記錄),並將重置您的標識列。

如:

TRUNCATE TABLE dbo.table 

http://msdn.microsoft.com/en-us/library/aa260621(SQL.80).aspx

這裏的顯著限制是你不能使用它被另一個表引用的表。在這種情況下,你可以使用標準的刪除,然後使用DBCC CHECKIDENT

如:

DELETE FROM dbo.table 
GO 
DBCC CHECKIDENT(dbo.table, reseed, 0) 

http://msdn.microsoft.com/en-us/library/ms176057.aspx

記住與刪除,以確保您在正確的順序刪除信息(即考慮到外鍵)。

我經常使用的另一種方法是當我想重置數據庫時,只需編寫一個完整的拆卸/重建腳本。基本前提是拆除或刪除腳本開頭的所有數據庫對象,然後重新創建它們。這不一定是所有情況下的解決方案,但對於基本任務來說,這對我來說很合適。爲了避免錯誤,我通常會增加我的下落語句IF語句,如:

IF EXISTS 
(
    SELECT * 
    FROM information_schema.tables 
    WHERE table_name = 'table' AND table_schema = 'dbo' 
) 
BEGIN 
    DROP TABLE dbo.table 
END 
+0

非常感謝+ 1 – Wil 2009-11-30 12:35:55

+0

我無法得到截斷工作 - 它隨機更改索引 - 有時從3開始,其他時間1但您的第二個方法/示例完美工作...我用不同的名稱複製並粘貼了6次,可以一起運行 - 它重置所有內容,確實**我所需要的。非常感謝。 – Wil 2009-11-30 13:54:50

+0

謝謝,很高興幫助:)聽起來奇怪的行爲與截斷,如果你開始處理大量的數據,你可能不得不重新訪問這種方法 - 但如果你到達那裏讓我們知道,我們可以幫助你解決這個問題 – Chris 2009-11-30 15:58:42

1

Here'a的快捷方式刪除表中的所有數據:

TRUNCATE TABLE YourTableName 

你可以寫一個腳本,將截斷所有表。

另一種方法是隻刪除表並重新創建它。

如果您確實想要刪除全部數據,那麼您可以分離數據庫並創建一個全新的數據庫;它有點極端,但可能比首先放下所有東西更快。

+0

非常感謝+1,重新設置的原因很簡單,我一直在刪除所有表格內容,並且在處理關係時生成自己的號碼,因此更容易記住它是一個而不是進入數據視圖驗證它是什麼......我知道我可以寫一個腳本或類似的東西,但是這個項目對於那些本來需要工作一天的東西來說變得如此之大,我只是不想讓事情複雜化已經比已經! – Wil 2009-11-30 12:14:50

1

你爲什麼不寫一些T-SQL代碼來刪除(或截斷,甚至更快),所有的表?清理表格時要小心考慮完整性規則:在清潔包含主鍵的表格之前,先清理包含外鍵的表格。

+0

非常感謝+ 1 – Wil 2009-11-30 12:15:27

1

如果您只需清除數據,那麼只需編寫一個腳本來截斷每個表中的所有數據。 truncate命令也會重置任何IDENTITY字段。

TRUNCATE TABLE myTable 

對於你有的每張表。然後,每次運行該腳本。

+0

非常感謝+ 1 – Wil 2009-11-30 12:35:25

0

正如其他人所建議的,我認爲最好維護一個腳本,從頭構建數據庫,並在重建數據庫之前拆除數據庫。像開發應用程序的其餘部分一樣開發這個腳本。我發現通過腳本比通過GUI構建數據庫更容易理解數據庫,尤其是在存在複雜關係,觸發器等情況下。

如果您有其他開發人員,並且可能比複製工作數據庫並將其交給其他開發人員更快,更不容易出錯,這也很有用。

在發佈時,您可以凍結該腳本,然後爲下一個版本創建增量腳本,該版本只包含從初始架構到新增的更改。這還可以在重新創建三角洲前創建新對象,以便在不必擦除整個數據庫的情況下輕鬆重新運行。

0

,如果你使用Visual Studio 2010,然後

打開解決方案並雙擊MDF文件的App_Data文件夾。 右鍵單擊您的表格,在菜單中選擇「顯示錶格數據」。 選擇所有行並刪除所有行。

相關問題