我在这里全亏了。
我有一个SQL Server数据库,它具有一个最关键的中央表,并且具有许多与它具有外键关系的many子表。在所有表上启用外键检查。为了确定,我运行了EXEC sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
。
尽管如此,多个子表中的记录都具有引用父表中不存在的6条记录的外键。
这怎么可能?
我运行DBCC CHECKDB以查看是否存在数据库损坏,并且得到了:
CHECKDB在数据库'xxxxxDev'中发现0个分配错误和0个一致性错误。DBCC执行完成。如果DBCC打印了错误消息,请与系统管理员联系。
谢谢您的“ Piotr”(https://stackoverflow.com/users/10542581/piotr)。
开发人员已为隐藏行的表的安全策略(行级安全性)添加了一个谓词。他从未删除过它,而我忘记了它在那里。
我以为我疯了...
可能的原因是为父表启用了行级安全性。它可能正在隐藏查询中的行。