2013-03-08 62 views
1

我正在測試大量模式更改以升級我們的數據庫以使用最新版本的打包產品運行。如何在刪除記錄時忽略錯誤

在這一點上,我不關心數據庫中包含的數據,只有架構(即表,視圖,約束,鍵,存儲過程等)。

我的測試需要運行腳本,解決錯誤,重新運行腳本。如果我想重新運行腳本,我需要先恢復數據庫以使其恢復到已知狀態。由於數據量很大,因此恢復數據庫非常耗時。我想「瘦」分貝,儘可能多地刪除數據。這樣將恢復數據庫和重新運行我的腳本將更快

當我嘗試從許多表中刪除記錄(「刪除表名」)我遇到約束錯誤,命令停止。

有沒有辦法允許命令繼續,實際上,刪除表中沒有約束問題的所有記錄?換句話說,我希望命令忽略錯誤並繼續刪除所有可能的記錄。

任何建議將不勝感激。

+0

多少桌,你呢?您可以在刪除時關閉約束條件嗎? – Byron 2013-03-08 21:11:48

回答

0

拜倫上面說得很好;你可以禁止外鍵或使用ALTER TABLE命令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

相關問題