我遇到有人丢弃表的情况,但外键仍留在sys.foreign_keys中。有没有办法删除不再有表的外键,或者我应该尝试删除sys.foreign_keys中的行?
答案 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获取更多信息。