2011-08-16 114 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)。這也可以解決問題。