2013-01-06 66 views
4

我不得不從一個有許多FK約束的表中刪除幾千條記錄。 我停止了所有表中的約束執行,並刪除了記錄,並修復了DBCC檢查顯示給我的明顯約束條件,然後我啓用了回約束。 之後,DBCC檢查不幸仍然顯示一些錯誤,但在這一點上,我沒有時間 來尋找原因。我的問題就像標題中說的那樣愚蠢,但如果我在限制錯誤的情況下離開數據庫一段時間會發生什麼?使用此數據庫的應用會受到影響嗎? 我可以修改約束嗎? (我使用SQL Server 2008) 謝謝數據庫中存在限制錯誤的危險是什麼?

+0

你的意思是你重新啓用nocheck選項的約束?對違規行的任何更新都會失敗,即使它們沒有觸及錯誤的列值。同時,不可信的查詢優化器不會使用它們來潛在地簡化查詢。 –

回答

3

您將有缺乏完整性(有一些無效信息)的數據。這不會導致數據庫崩潰或產生錯誤,但應用程序如何對此做出反應完全取決於應用程序。您可能會看到一些錯誤頁面,甚至更糟糕的是,無效數據會傳播以產生更多無效的數據或操作(這可能更難追查並修復)。

這些約束的要點是使數據庫驗證(或拒絕)數據,以便應用程序可以依賴某些在數據中不存在的無效模式。許多應用程序的構建是爲了不使用這些保證,並且自己處理數據完整性,但是如果您的應用程序確實依賴於它們,然後將它們從它下面取出,那聽起來有點危險。

+0

謝謝,我也很害怕,所以我花了幾個小時,解決了所有的限制。 –

相關問題