从表丢弃的外键剩余

时间:2014-04-15 22:31:55

标签: sql foreign-keys

我遇到有人丢弃表的情况,但外键仍留在sys.foreign_keys中。有没有办法删除不再有表的外键,或者我应该尝试删除sys.foreign_keys中的行?

1 个答案:

答案 0 :(得分:0)

修改系统表是个坏主意。 不要那样做。实际上,SQL Server不允许您轻松地执行此操作。

您应首先尝试使用以下命令:

DBCC CHECKDB
DBCC CHECKCATALOG
DBCC CHECKCONSTRAINTS (constraint_name)

(如果省略数据库名称,则使用当前数据库)。 如果你真的有一个没有表的外键,dbcc应该检测它。从dbcc输出中读取结果并注意错误消息。

另外,请尝试:

SELECT
  name,
  is_disabled,
  is_not_trusted
FROM   sys.foreign_keys
WHERE  is_disabled = 1
    OR is_not_trusted = 1

并查看是否可以从SQL Server获取更多信息。