我在运行以下 Transact-SQL 命令时遇到错误:
CREATE UNIQUE NONCLUSTERED INDEX IX_TopicShortName
ON DimMeasureTopic(TopicShortName)
错误是:
Msg 1505, Level 16, State 1, Line 1 The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.DimMeasureTopic' and the index name 'IX_TopicShortName'. The duplicate key value is ().
当我运行 SELECT * FROM sys.indexes WHERE name = 'IX_TopicShortName'
或 SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[DimMeasureTopic]' )
IX_TopicShortName 索引不显示。所以似乎没有重复。
我在另一个数据库中有相同的架构,并且可以在那里创建索引而不会出现问题。有什么想法为什么它不会在这里创建吗?
最佳答案
并不是索引已经存在,而是表本身的 TopicShortName
字段存在重复值。根据错误消息,重复值是一个空字符串(我猜这可能只是发布的一个方面)。此类重复项会阻止创建 UNIQUE
索引。
您可以运行查询来确认您是否有重复项:
SELECT
TopicShortName,
COUNT(*)
FROM
DimMeasureTopic
GROUP BY
TopicShortName
HAVING
COUNT(*) > 1
可能在另一个数据库中数据不同,并且不存在重复项。
关于sql-server-2005 - 由于不存在重复项而无法创建索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2180842/