1

我正在测试大量模式更改以升级我们的数据库以使用我们拥有的最新版本的打包产品运行。

此时我对数据库中包含的数据不感兴趣,只对模式(即表、视图、约束、键、存储过程等)感兴趣。

我的测试需要运行脚本、解决错误、重新运行脚本。如果我想重新运行脚本,我需要先恢复数据库以使其恢复到已知状态。恢复数据库非常耗时,因为它有很多数据。我想“瘦身”数据库并删除尽可能多的数据。这样可以更快地恢复数据库并重新运行我的脚本

当我尝试从许多表中删除记录(“从表名中删除”)时,我遇到约束错误并且命令停止。

有没有办法让命令继续,实际上,删除表中没有约束问题的所有记录?换句话说,我希望该命令忽略错误并继续删除它可以删除的所有记录。

任何建议将不胜感激。

4

1 回答 1

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

http://technet.microsoft.com/en-us/library/ms190273.aspx

于 2013-03-08T21:21:04.240 回答