2009-01-21 65 views
2

我想知道在進入生產之前,您將使用什麼來清理所有測試數據的數據庫(使結構保持完好)?清理SQL數據庫中的所有記錄

我使用類似:

-- disable referential integrity 
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' 
GO 

EXEC sp_MSForEachTable ' 
IF OBJECTPROPERTY(object_id(''?''), ''TableHasForeignRef'') = 1 
    DELETE FROM ?' 
DBCC CHECKIDENT (''?'', RESEED, 0) 
GO 

-- enable referential integrity again 
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL' 
GO 

哪,我想我拿起放在網上的某個地方,但是,它並不總是似乎補種一切回零。

回答

3

常用的方法是使用一個設置腳本來刪除所有表,然後重新創建它們。這比僅擦除保持任何更改的數據有利。

2

我通常從dev數據庫生成DDL語句,然後在生產服務器上從頭開始創建數據庫。

1

我們讓腳本在版本控制中構建數據庫。當我們需要清除測試數據時,我們刪除數據庫並重新創建它。另一種選擇是恢復處於所需狀態的備份。

1

我會爲需要擦洗的表創建創建/刪除腳本,並將其擦除並重新創建它們。

1

要重新設置您的標識列的種類,您可以將以下行添加到重置腳本中。

EXEC sp_MSForEachTable 'DBCC CHECKIDENT('?', RESEED, 0)'

您可以將命令中的0更改爲默認值應爲的值。