2011-08-16 55 views
3

因此,首先,我们使用历史记录系统,其中包含所有表的历史记录版本。我将一个新列添加到表中,因此我将它添加到dbo和hist版本中。我添加了一个约束,默认值应该是0.但是,我拼写了hist表的列。因此,我添加了正确的一个,然后放下不正确的一个。但是,这是说The object 'DF__FCRelease__NumRe_125D4E50' is dependent on column 'NumRelease'.这是我上面提到的约束。我试着通过SQL来删除它,它宣称它已成功完成,但约束依然存在。我试过通过GUI删除它,但它声称该对象不存在。这里是我试图用来删除约束的SQL:SQL Server约束不会删除

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF__FCRelease__NumRe__125D4E50]') AND type = 'D') 
BEGIN 
ALTER TABLE [hist].[FCRelease] DROP CONSTRAINT [DF__FCRelease__NumRe__125D4E50] 
END 

任何想法?

+1

您是否尝试运行alter alter statement ALTER TABLE [hist]。[FCRelease] DROP CONSTRAINT [DF__FCRelease__NumRe__125D4E50] ?你还看到约束依然存在的地方。如果您使用的是对象浏览器,则可能需要刷新显示。 – David

+0

你确定你在正确的数据库上下文中运行吗? – JNK

+0

我想我只是尝试了alter语句,但我确实刷新了显示。这可能是一个正确的数据库上下文的问题。当我的同事尝试它时,他把它删除了,尽管他和我一样做了同样的事情,但这对他有效。 –

回答

0

我相信这与a similar question有关。所以,我会给你一个类似的答案。你可能需要rebuild your master database。我怀疑那里有一些腐败导致了这个问题。

作为一种解决方法,您可以尝试删除该列,重新添加该列,然后重新添加该约束(a la here)。这也可以解决问题。