我想知道在投入生产之前,您将使用什么来清理所有测试数据的数据库(保持结构完好无损)?
我用的是:
-- 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
我认为我在某个地方上网了,然而,似乎并不总是把所有东西都重新归零。
答案 0 :(得分:3)
常见的方法是使用一个设置脚本来删除所有表,然后重新创建它们。这样做的好处就是擦除持久存在任何变化的数据。
答案 1 :(得分:2)
我通常从开发人员数据库生成DDL语句,然后在生产服务器上从头开始创建数据库。
答案 2 :(得分:1)
我们保留脚本以在版本控制中构建数据库。当我们需要清除测试数据时,我们删除数据库并重新创建它。另一种选择是恢复处于所需状态的备份。
答案 3 :(得分:1)
我会为你需要擦除的表创建创建/删除脚本,然后将它们擦除并重新创建它们。
答案 4 :(得分:1)
要重新设定您的标识列,您可以将以下行添加到重置脚本中。
EXEC sp_MSForEachTable 'DBCC CHECKIDENT('?', RESEED, 0)'
您可以将命令中的0更改为默认值。