我有一个数据库的测试环境,我想在测试周期开始时用新数据重新加载该数据库。我对重建整个数据库不感兴趣——只是简单地“重新设置”数据。
使用TSQL从所有表中删除所有数据的最佳方法是什么?是否有可以使用的系统存储过程、视图等?我不想为每个表手动创建和维护截断表语句-我更希望它是动态的。
我有一个数据库的测试环境,我想在测试周期开始时用新数据重新加载该数据库。我对重建整个数据库不感兴趣——只是简单地“重新设置”数据。
使用TSQL从所有表中删除所有数据的最佳方法是什么?是否有可以使用的系统存储过程、视图等?我不想为每个表手动创建和维护截断表语句-我更希望它是动态的。
当前回答
我不明白为什么清除数据会比删除并重新创建每个表的脚本更好。
或者备份你的空数据库,并在旧的数据库上恢复它
其他回答
对于SQL 2005,
EXEC sp_MSForEachTable 'TRUNCATE TABLE ?'
2000年和2005/2008年的链接更多。
用脚本删除数据库要容易得多(甚至可能更快),然后直接从脚本中删除并创建数据库。
只有当你的表之间没有任何外键关系时,才能截断所有的表,因为SQL Server不允许你用外键截断一个表。
另一种方法是先确定有外键的表并删除它们,然后再截断没有外键的表。
详见http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=65341和http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=72957。
我不明白为什么清除数据会比删除并重新创建每个表的脚本更好。
或者备份你的空数据库,并在旧的数据库上恢复它
虽然有点晚了,但也许能帮到别人。 我有时会创建一个过程,使用T-SQL执行以下操作:
将所有约束存储在临时表中 删除所有约束 除某些不需要截断的表外,截断所有表 重新创建所有约束。
我已经把它列在我的博客上了