在什么情况下,父 table 可能会丢失子 table 中活动外键引用的记录?
Under what circumstances could it ever be possible for a parent table to be missing records referenced by active foreign keys in child tables?
我完全不知所措了。
我有一个 SQL 服务器数据库,其中有一个中央的、最关键的 table,有许多 许多 个子 table 具有它的外键关系。所有 table 都启用了外键检查。我运行EXEC sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
只是为了确定。
然而不知何故,多个子 table 中的记录具有引用父 table 中不存在的 6 条记录的外键。
这怎么可能?
我 运行 DBCC CHECKDB 看看是否有数据库损坏,我得到:
CHECKDB found 0 allocation errors and 0 consistency errors in database 'xxxxxDev'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
我在这里错过了什么?怎么会这样?我是 "shook".
谢谢 "Piotr" (https://whosebug.com/users/10542581/piotr) 的回答。
开发人员已将谓词添加到隐藏行的 table(行级安全性)的安全策略中。他从来没有删除它,我忘了它在那里。
我以为我要疯了...
可能的原因是为父级 table 启用了行级安全性。
它可能在您的查询中隐藏了行。
我完全不知所措了。
我有一个 SQL 服务器数据库,其中有一个中央的、最关键的 table,有许多 许多 个子 table 具有它的外键关系。所有 table 都启用了外键检查。我运行EXEC sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
只是为了确定。
然而不知何故,多个子 table 中的记录具有引用父 table 中不存在的 6 条记录的外键。
这怎么可能?
我 运行 DBCC CHECKDB 看看是否有数据库损坏,我得到:
CHECKDB found 0 allocation errors and 0 consistency errors in database 'xxxxxDev'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.
我在这里错过了什么?怎么会这样?我是 "shook".
谢谢 "Piotr" (https://whosebug.com/users/10542581/piotr) 的回答。
开发人员已将谓词添加到隐藏行的 table(行级安全性)的安全策略中。他从来没有删除它,我忘了它在那里。
我以为我要疯了...
可能的原因是为父级 table 启用了行级安全性。
它可能在您的查询中隐藏了行。