How to delete all data in each tables on my database
我有一个数据库,其中包含300个包含数据的表。 我需要删除每个表中的所有数据。 我试图截断所有表,但后来我得到一个错误,该进程无法完成,因为表中的一列是外键。 还有其他方法可以解决我的问题吗? 谢谢。
你需要:
- 删除所有外键,截断,然后重新创建FK;
- 禁用所有外键,删除(不截断),然后重新启用FK;要么,
- 首先从子表中删除。
如果你足够幸运地拥有循环引用,后者可能是不可能的,即使没有循环引用,它仍然可能很复杂。前两个也相对复杂,但我最近为不同的用户解决了一个非常类似的问题(我发现这些比尝试确定正确的删除顺序更容易):
暂时禁用所有外键约束
另一个想法是执行更简单,更完整的擦除:
- 脚本表(显然是其他对象),删除数据库并重新创建它;要么,
- 创建数据库的副本,并使用Visual Studio / SSDT或第三方模式比较工具创建空数据库中的所有对象(然后您可以删除旧数据库并重命名新数据库)。
试试这个:快速的方法。
1 2 3 4 5 6 | use [YourDB] Go EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' EXEC sp_MSForEachTable 'Truncate Table ?' EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL' |