Sql-Server
受信任約束中的約束違反
我有一個帶有約束的表,該表具有違反該約束的現有記錄。雖然如果有人在沒有檢查的情況下應用約束並且在插入違規數據之後這是可能的,那麼 sys.foreign_keys 表中的 is_not_trusted 標誌怎麼可能為零?
這是我目前遇到的情況,is_not_trusted 標誌為零的外鍵數據違規。我認為這本質上是確認約束是否已“宗教”執行的標誌。
謝謝
來自評論:
這可能是由於頁面上物理寫入的值不正確(數據損壞)而發生的。或者產品中的錯誤(可能不太可能但可能)。執行
DBCC CHECKDB
以查看是否發現任何問題。– 馬丁·史密斯 2016 年 6 月 18 日 0:07 3沿著馬丁的評論 - 數據是否通過
MERGE
?這是一個可以完全做到這一點的錯誤(關閉為“不會修復”),以及另一個錯誤(也是“不會修復”)。如果您需要更多避免的理由MERGE
,請參閱這篇文章。– Aaron Bertrand♦ 2016 年 6 月 18 日在 3:21