清理SQL数据库中的所有记录

问题描述:

我想知道在进入生产之前,您将使用什么来清理所有测试数据的数据库(使结构保持完好)?清理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 

哪,我想我拿起放在网上的某个地方,但是,它并不总是似乎补种一切回零。

常用的方法是使用一个设置脚本来删除所有表,然后重新创建它们。这比仅擦除保持任何更改的数据有利。

我通常从dev数据库生成DDL语句,然后在生产服务器上从头开始创建数据库。

我们让脚本在版本控制中构建数据库。当我们需要清除测试数据时,我们删除数据库并重新创建它。另一种选择是恢复处于所需状态的备份。

我会为需要擦洗的表创建创建/删除脚本,并将其擦除并重新创建它们。

要重新设置您的标识列的种类,您可以将以下行添加到重置脚本中。

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

您可以将命令中的0更改为默认值应为的值。