清理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更改为默认值应为的值。