sql-server-2005 - 由于不存在重复项而无法创建索引?

标签 sql-server-2005 tsql indexing unique-index

我在运行以下 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/

相关文章:

sql-server-2005 - Entity Framework 代码优先非常慢

c# - 如何从 SQL 语句中获取使用的列和表

sql - 如何获取位类型列的计数?

python - 在 numpy 中向量化索引操作

python - 在 Python 中为道琼斯指数抓取雅虎财经

sql - 您应该如何使用仅包含日期的值针对类型为 "DateTime"的列构造 SQL 搜索条件?

sql-server - SSIS:刚刚开始在我的预定 SSIS 包上收到 "Key not valid for use in specified state."错误

mysql - EF4.1/MVC3 数据库第一个 : How to remove password from connection string

tsql - 查询以获取所有带参数的 SSRS 订阅列表

python - 如何获取列表的最后一个元素?