2011-03-18 58 views
0

我有一個損壞的外鍵約束在我們的數據庫之一。SQLServer:如何刪除損壞的外鍵約束

我不能放棄它 - 因爲它不存在。它不存在於sys.sysobjects和sys.objects中。 SQLServer管理控制檯也沒有列出它,

然而,我不能重新創建外鍵約束,因爲它已經存在於模式中(錯誤:具有相同標識符的對象已經存在)。

我該如何解決這個問題?哪些元數據表對此負責?

+0

查看sysindexes也是。我不確定,但值得一試。 – 2011-03-18 12:43:14

+1

沒有任何內容 – Falcon 2011-03-18 13:09:13

+0

如果數據庫中絕對沒有其他對象具有該名稱(我希望此時您一直在基於名稱搜索sys.objects),請使用MS打開一張票。 – 2011-03-18 13:31:47

回答

2

我能想到的唯一的事情是,如果它以某種方式進行區分大小寫的匹配,並且您傳入的名稱與服務器存儲的大小寫不同。試試這個:

select fk.[name] 
from sys.foreign_keys fk 
inner join sys.objects o 
    on fk.[referenced_object_id] = o.[object_id] 
where lower(o.[name]) = lower('your table here')