我正在测试大量架构更改,以升级我们的数据库以使用我们拥有的最新版本的打包产品运行。
此时我对数据库中包含的数据不感兴趣,只对模式(即表,视图,约束,键,存储过程等)感兴趣。
我的测试需要运行脚本,解决错误,重新运行脚本。如果我想重新运行脚本,我需要首先恢复数据库以使其恢复到已知状态。恢复数据库非常耗时,因为它有大量数据。我想“减少”db并删除尽可能多的数据。这样,恢复数据库并重新运行我的脚本
会更快当我尝试从许多表中删除记录(“从表名中删除”)时,我遇到约束错误,命令停止。
有没有办法允许命令继续,实际上,删除表中没有约束问题的所有记录?换句话说,我希望命令忽略错误并继续删除它可以记录的所有记录。
任何建议都将不胜感激。
答案 0 :(得分:0)
上面的拜伦说得好;您可以使用ALTER TABLE命令禁用FOREIGN KEY或CHECK约束:
ALTER TABLE TableName NOCHECK CONSTRAINT ALL
然后完成你的工作,完成后,
ALTER TABLE TableName CHECK CONSTRAINT ALL
重新启用约束。 但请注意:如果您在重新启用数据后将数据置于违反约束的不一致状态,则由于约束错误,将来的更新可能会失败。
来源:
http://weblogs.sqlteam.com/joew/archive/2008/10/01/60719.aspx