无法在SQL Server 2005中下降的约束。“无法删除约束请参见前面的错误”

问题描述:

我试图在一个数据库表中删除一个约束,像这样:无法在SQL Server 2005中下降的约束。“无法删除约束请参见前面的错误”

ALTER TABLE MyTable drop CONSTRAINT FK_MyTable_AnotherTable 

但执行刚刚运行,运行。如果我停止它,我看到:

Msg 3727, Level 16, State 0, Line 2 
Could not drop constraint. See previous errors. 

网络搜索抛出了不同的页面,但请注意,约束正确命名,我试图用正确的名称

+0

什么是以前的错误? – 2010-04-07 14:31:21

找到一种方法来排序,虽然我不明白为什么它是必要的。

已经能够先禁用它删除约束:

ALTER MyTable NOCHECK CONSTRAINT FK_MyTable_AnotherTable 

然后滴完成精细

仍然会欢迎的原因有任何意见,为什么这是必要的

+0

我想删除既不是主键也不是外键的列,我遇到了同样的错误,我尝试了您的解决方案,但它没有工作。有任何想法吗 ? – 2014-05-29 07:40:57

将其删除确认您还没有已经下降的约束,如:

SELECT OBJECT_ID('FK_MyTable_AnotherTable') 

如果返回null,你的约束不复存在。这将解释错误消息。

+0

没有约束尚未被删除,我已经试过你的方法以及其他人,它肯定还存在。它也将阻止我删除相关的列 – DannykPowell 2010-04-07 14:24:57

+0

@DannykPowell:'object_id('FK_MyTable_AnotherTable','F')'显示什么? – Andomar 2010-04-07 14:33:08

+0

看到我的答案,首先通过禁用约束进行排序 - 感谢您的回答@Andomar – DannykPowell 2010-04-07 14:54:43

我在SQL Server 2008 R2上有同样的问题,我解决了我的问题与下线,希望它会为别人工作:)

Alter Table [Table Name] 
    DROP Column [Column Name] 
+0

我可以知道给我答案-1的原因吗?如果你纠正我,我会很高兴。 – 2014-05-29 09:35:15

+2

我希望你已经为你的原因得到了答案。我不认为线程所有者想要删除任何列,他只想删除外键(也许更改列定义) – NPC 2016-08-19 12:28:42

我有同样的问题。

原因是我在我的游标语句中犯了一个错误,它正在迭代我要丢弃的一些约束。 因此,当约束实际上在同一事务中删除时发生此错误。然后我做了回滚并检查它是否存在:它确实(当然,在回滚之后!)。

检查下降时是否真的存在。